Mi a baj ezzel a free pascal kóddal?
azt szeretném ha a programom 0-tól 2000-ig összeadná a számjegyek-ek. ( pl 0-tól 11-ig 14 db számjegyet írtam le)
program kettoezer;
uses crt;
var a,b:integer;
begin
clrscr;
a:=0;
b:=0;
repeat
if a<10 then begin
b:=b+1;
end;
if (a>10) and (a<100) then begin
b:=b+2;
end;
if (a>100) and (a<1000) then begin
b:=b+3;
end;
if (a>1000) and (a<10000) then begin
b:=b+4;
end;
a:=a+1;
until a:=2000;
writeln(b);
end.
ennyit még igazítottam rajta, de így se jó. :
program ketto;
uses crt;
var a,b:integer;
begin
clrscr;
a:=0;
b:=0;
repeat
if a<10 then begin
b:=b+1;
end;
if (a>10) and (a<100) then begin
b:=b+2;
end;
if (a>=100) and (a<1000) then begin
b:=b+3;
end;
if (a>=1000) and (a<10000) then begin
b:=b+4;
end;
a:=a+1;
until a:=2000;
writeln(b);
end.
megvan mi volt a hiba!
until a:=2000; írtam until a=2000; helyett :) annyit múlott :D ha még vmi baj van vele írjátok le nyugodtan!
Én így csinálnám:
program szamjegyszamol;
{$mode objfpc}{$H+}
uses sysutils;
var
i,db : integer;
begin
db:=0;
for i:=0 to 2000 do
begin
db:=db+Length(IntToStr(i));
end;
writeln(db);
readln;
end.
Némiképp rövidebb a kód. De a te módszereddel is meg lehet csinálni, mindjárt ránézek arra is, hogy mi lehet a gond vele.
Na, ki is találtam mi lehet a gond a te kódoddal. Először is nem a=2000-ig kell futni a ciklusnak hanem a>2000-ig, mivel az előbbi esetben a 2000-et már nem számolja bele.
Talán így helyes lehet a kód:
program ketto;
uses crt;
var
a,b:integer;
begin
clrscr;
a:=0;
b:=0;
repeat
if a<10 then
b:=b+1
else
if (a>=10) and (a<100) then
b:=b+2
else
if (a>=100) and (a<1000) then
b:=b+3
else
if (a>=1000) and (a<10000) then
b:=b+4;
a:=a+1;
until a>2000;
writeln(b);
end.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!