Kezdőoldal » Számítástechnika » Programozás » Mi a baj ezzel a free pascal...

Mi a baj ezzel a free pascal kóddal?

Figyelt kérdés

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.


2010. szept. 26. 16:11
1 2
 1/11 A kérdező kommentje:

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.

2010. szept. 26. 16:27
 2/11 A kérdező kommentje:

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!

2010. szept. 26. 16:38
 3/11 anonim ***** válasza:
>= 10 kell mert így a 10-t nem veszi figyelembe.
2010. szept. 26. 17:23
Hasznos számodra ez a válasz?
 4/11 A kérdező kommentje:
igazad van oda elfelejtettem beírni :) köszi!
2010. szept. 26. 17:32
 5/11 anonim ***** válasza:
"Elegánsabb" megoldás a 'case' használata. Nézz utána mi az és hogyan működik.
2010. szept. 27. 07:31
Hasznos számodra ez a válasz?
 6/11 anonim ***** válasza:
Még elegánsabb, ha írsz egy "log10" függvényt, ami visszaadja a számjegyek számát (ami a tizes alapú logaritmus egész része), és azt hívogatod.
2010. szept. 27. 08:16
Hasznos számodra ez a válasz?
 7/11 A kérdező kommentje:
még mindig nem jó mivel összesen 6894 számjegyest használunk fel a 0-2000 leírásához viszont a program csak 6890-et számol. mi a gond ezzel?
2010. szept. 27. 16:13
 8/11 ejbenjaro ***** válasza:

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

2010. szept. 29. 17:29
Hasznos számodra ez a válasz?
 9/11 anonim ***** válasza:
A kérdezőé nem számolja bele a 2000-et. Közvetlen a feltétel előtt (hátultesztelő ciklus!) van az értéknövelés, felmegy 2000-re, és mivel az a=2000 feltétel teljesül, azt már nem számolja bele. a>2000 legyen ott.
2010. szept. 29. 17:31
Hasznos számodra ez a válasz?
 10/11 ejbenjaro ***** válasza:

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.

2010. szept. 29. 17:39
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!