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.
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.