Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

problem u Pascal-u

[es] :: Pascal / Delphi / Kylix :: problem u Pascal-u

[ Pregleda: 2002 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

DarkShadow
Banja Luka, BiH

Član broj: 289913
Poruke: 2
89.111.230.*



Profil

icon problem u Pascal-u26.12.2011. u 22:25 - pre 149 meseci
imam jedan problem u Pascalu, dobili smo u skoli zadatak a ja sam nema sanse da znam da ga uradim pa ako bih neko mogao pomoci, unaprijed se zahvaljujem.
zadatak glasi:

Napisati program koji pronalizi koliko se puta broj 2 ponavlja za unijete brojeve.
npr. ja unesem brojeve: 27, 39, 1268, 22567, 3926... i trebam napisati program koji ce pronaci koliko se puta u ovom program ponavlja cifra dva i ispisuje rezultat(ovdje je rezultat 5)
smejete koristiti sledece naredbe: IF THEN, IF ELSE, CASE, FOR-petlju, WHILE-petlju, REPEAT-petlju.

Ja stvarno nemam nikakvu ideju kako da ovo uradim, i ako bih mi neko mogao i objasniti taj zadatak bio bih mu zahvalan.



Unaprijed hvala.

 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: problem u Pascal-u26.12.2011. u 23:38 - pre 149 meseci
> Napisati program koji pronalizi koliko se puta broj 2 ponavlja za unijete brojeve.
> npr. ja unesem brojeve: 27, 39, 1268, 22567, 3926... i trebam napisati program koji ce pronaci koliko se puta u ovom program ponavlja cifra dva i ispisuje rezultat(ovdje je rezultat 5)
> smejete koristiti sledece naredbe: IF THEN, IF ELSE, CASE, FOR-petlju, WHILE-petlju, REPEAT-petlju.

Jedna ideja je da odrediš cifre svakog od unetih brojeva i proveriš da li je neka jednaka 2. Evo primera za rastavljanje broja na cifre.

Code:

var
  Broj: Integer;
begin
  Readln(Broj);

  while Broj > 0 do
  begin
    Writeln(Broj mod 10);
    Broj := Broj div 10;
  end;

  Readln;
end.

 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: problem u Pascal-u27.12.2011. u 02:29 - pre 149 meseci
Napravis repeat..until ili while..end petlju u kojoj ce se unositi brojevi, posle svakog unosa racunas koliko se cifra 2 pojavljuje u tom broju i dodajes to na jednu promenljivu koja je pre pocetka petlje inicijalizovana na 0. Iz petlje stavis da se izlazi kada se recimo unese broj 0. Evo kako bi pseudokod izgledao:

Code:

rezultat = 0; // inicijalizuj promenljivu u kojoj ces cuvati rezultat, tj koliko se 2 ponavlja u brojevima, na nulu

repeat // pocetak petlje
  korisnik unosi broj
  racunas koliko se puta cifra 2 ponavlja u broju i to dodajes na promeniljivu "rezultat", koristis kod koji ti je savkic dao
until broj = 0; // ovde petlja proverava da li je uneti broj jednak nuli, ako nije, izvrsavanje programa se vraca na pocetak petlje, ako jeste, prekida se izvrsavanje petlje i ide se na liniju ispod

ispisi rezultat
 
Odgovor na temu

DarkShadow
Banja Luka, BiH

Član broj: 289913
Poruke: 2
89.111.229.*



Profil

icon Re: problem u Pascal-u27.12.2011. u 17:43 - pre 149 meseci
nisam se prije mogao javiti, skola, ali evo stigao sam:

ja sam to shvatio otprilike ovako, ali program nesto nevalja tj. ne ispisuje sta bih trebao
pa ako bih me neko mogao ispraviti i objasniti unaprijed hvala


Code:

program blabla;
 uses wincrt;
  var
   broj,rezultat:integer;
  begin
   rezultat:=0;
    repeat
     readln(broj);
      while broj>0 do
       begin
    writeln(broj mod 10);
    broj:=broj div 10;
         begin
      if broj mod 10 = 2 then
      rezultat:=rezultat+1;
         end;
       end;
    until broj=0;
   writeln(rezultat);
end.



 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: problem u Pascal-u27.12.2011. u 18:06 - pre 149 meseci
Code:

1    writeln(broj mod 10);
2     broj:=broj div 10;
3          begin
4       if broj mod 10 = 2 then
5       rezultat:=rezultat+1;
6         end;


Prva linija ti ispisuje zadnju cifru broja. Razmisli, jel ti ovo potrebno u programu ?
Druga linija ti deli broj sa 10 i smesta celobrojnu vrednost deljenja u broj. Dakle, ako je broj = 12345, posle ove linije, broj ce biti 1234
Cetvrta linija se onda pita da li je zadnja cifra broja jednaka 2, i ako jeste u petoj liniji se rezultat poveceva za jedan.
Treca i sesta linija su ti neportrebne, njih mozes da izbacis, nista ne postizes tim begin..end blokom.

Uzmi npr da je uneti broj 12345 i simuliraj izvrsavanje programa u glavi i videces sta ne valja:

Code:

readln(broj); // unosi se broj 12345
while broj>0 do begin
  broj = broj div 10; // prvobitna vrednost broja je 12345, posle ove linije je 1234
  if broj mod 10 = 2 then // ovde je broj vec 1234 i ti ispitujes da li je njegova zadnja cifra jednaka dvojci. Jesi ispitao peticu ? Nisi, jer si je u prethodnoj liniji eliminisao bez da prvo proveris da li je jednaka dvojci
    rezultat := rezultat + 1;
end;


 
Odgovor na temu

dusansilni95
Banja Luka, RS, BiH

Član broj: 296104
Poruke: 15
89.111.229.*



+11 Profil

icon Re: problem u Pascal-u30.12.2011. u 16:40 - pre 149 meseci
kao prvo:
morao sam da pravim novi profil, na ovom starom(DarkShadow) mi se promijenila sifra i email adresa, nemam pojma kako, al uglavnom otislo nepovratno

a kao drugo:
izgleda da za mene nema nade, nisam uspio rijesiti onaj zadatak, pa bih zamolio da mi ga neko rijesi(da cijeli kod) i ako je moguce objasni zasto,kako?
 
Odgovor na temu

dusansilni95
Banja Luka, RS, BiH

Član broj: 296104
Poruke: 15
89.111.229.*



+11 Profil

icon Re: problem u Pascal-u30.12.2011. u 17:30 - pre 149 meseci
i imam jos jedan problem,
trebam napisati program koji provjerava da li je unijeti broj savrse, tj. ako jeste da ispise 'Broj je savrsen' a ako nije 'Broj nije savrsen'.
evo koda, kako bi po meni otprilike trebalo biti;

Code:

program blabla;
 uses wincrt;
  var
   i,n,s:integer;
  begin
   writeln('Unesi jedan broj:');
   readln(n);
    for i:=1 to n-1 do
     begin
      if n mod i = 0 then
      s:=s+i;
     end;
     begin
      if s mod n = 0 then
      writeln('Broj je savrsen') else;
      writeln('Broj nije savrsen');
     end;
end.



ali nesto ne valja.
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: problem u Pascal-u30.12.2011. u 17:48 - pre 149 meseci
Oko ovog zadatka sa savrsenim brojem...

1) Brojac nemas potrebe da postavljas do n-1, nego do n div 2, jer broj moze biti deljiv sa najvise svojom polovinom, ako je paran.
2) Inicijalizuj s na nulu pre brojaca za svaki slucaj
3) Posle brojaca ti pitas if s mod n = 0, a to znaci da n moze da bude 1, s da bude bilo koji broj, i ti ces dobiti TRUE kao rezultat tog upita. Trebas da pitas if s = n
 
Odgovor na temu

dusansilni95
Banja Luka, RS, BiH

Član broj: 296104
Poruke: 15
89.111.230.*



+11 Profil

icon Re: problem u Pascal-u30.12.2011. u 18:20 - pre 149 meseci
zahvaljujem se reiser-u na pomoci .
uradio sam zadatak i sad mi radi kako treba.
evo koda, pa ako neko bude imao isti ili slican zadatak nek se posluzi. mada sumnjam ovo je za vecinu ovdje smijesno:

Code:

program blabla;
 uses wincrt;
  var
   i,n,s:integer;
  begin
   writeln('Unesi jedan broj:');
   readln(n);
   s:=0;
    for i:=1 to (n div 2) do
     begin
      if n mod i = 0 then
      s:=s+i;
     end;
     begin
      if s=n then
      writeln('Broj je savrsen') else
      writeln('Broj nije savrsen');
     end;
end.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: problem u Pascal-u

[ Pregleda: 2002 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.