[ Suvajac @ 23.05.2011. 14:07 ] @
Imam problem oko zadatka, zadatak glasi: Broj je ”dobar” ako mu je svaka cifra veća od zbira cifara, koje se nalaze desno od nje. Na primer, dobri brojevi su 7, 531 i 8421, a brojevi 33, 287 i 321 nisu dobri. Napisati program kojim se unose prirodni brojevi dok se ne unese 0, a ispisuje se najveći ”dobar” broj. Ako takav broj među unetim brojevima ne postoji, dati odgovarajuću poruku. Ja sam uradio zadatak, ali kad unesem neki sestocifren ili sedmocifren broj, program mi ne daje tacne rezultate. Zasto??? Code: program peti; var da,db,ta,tb,tc,ca,cb,cc,cd,pa,pb,pc,pd,pe,i,g,max:integer; broj:array[1..20] of integer; begin repeat g:=g+1; write(g,'.broj: '); readln(broj[g]); until broj[g]=0; max:=0; for i:=1 to (g-1) do begin if (broj[i]>9) and (broj[i]<100) then begin da:=broj[i] div 10; db:=broj[i] mod 10; if da>db then max:=broj[i]; end; if (broj[i]>99) and (broj[i]<1000) then begin ta:=broj[i] div 100; tb:=broj[i] mod 100 div 10; tc:=broj[i] mod 100 mod 10; if (ta>tb+tc) and (broj[i]>max) then max:=broj[i]; end; if (broj[i]>999) and (broj[i]<10000) then begin ca:=broj[i] div 1000; cb:=broj[i] mod 1000 div 100; cc:=broj[i] mod 1000 mod 100 div 10; cd:=broj[i] mod 1000 mod 100 mod 10; if (ca>cb+cc+cd) and (broj[i]>max) then max:=broj[i]; end; if (broj[i]>9999) and (broj[i]<100000) then begin pa:=broj[i] div 10000; pb:=broj[i] mod 10000 div 1000; pc:=broj[i] mod 10000 mod 1000 div 100; pd:=broj[i] mod 10000 mod 1000 mod 100 div 10; pe:=broj[i] mod 10000 mod 1000 mod 100 mod 10; if (pa>pb+pc+pd+pe) and (broj[i]>max) then max:=broj[i]; end; end; if max<>0 then write('Rezultat je: ',max) else write('Nema dobrih brojeva!'); readln; end. |