Nem tudom futtatni a pascal programomat, leellenőriznétek, hogy jól oldtam-e meg?
A feladat szövege: Nulla végjeléig generálj -10 és 10 közötti számokat, és számítsd ki a párosak és páratlanok összegét.
Így oldottam meg:
uses crt;
var a,ossz_paros,ossz_paratlan:integer;
begin
randomize;
ossz_paros:=0;
ossz_paratlan:=0;
a:=0;
writeln('a:=');readln(a);
while a<>o do begin
random(-19)+10
if a mod 2=0 then ossz_paros:=ossz_paros+a
else ossz_paratlan:=ossz_paratlan+a
end;
readln;
end.
Szia.
A következőket látom benne :
1. while a<>o do begin <-szerintem ez nem nulla ez kis "o" betű
2. random(-19)+10 hiányzik egy pontosveszző a végéről, illetve a "b:=" az elejéről és nem is jó, mivel negativ szám nem lehet a random függvény paramétere. (Ha "b:="-t használod akkor "b"-t fel kell venni a változók listájára)
Itt a random helpje a borland pascálból :
"A Word random number within the range 0 <= X < Range."
Tehát : b:=random(11)-20; vagy valami hasonló.
3. Az "a' bekérése sem jó helyen van.
Bekéred "a"-t aztán elinditod a ciklust, Ha nem nullát adok be kapsz egy végtelen ciklust mert "a"-t nem kéred be ujra valahogy igy kellene :
a:=1;
while a<>0 do begin
writeln('a:=');readln(a);
4. A vizsgálat nem "a"-ra kell hogy vonatkozzon, hanem a random függvény által generált számra (elvileg ez "b") és nem "a"-t kell hozzáadni, hanem "b"-t. Az Else ág végéről hiányzik egy pontosveszző.
if b mod 2=0 then ossz_paros:=ossz_paros+b
else ossz_paratlan:=ossz_paratlan+b ;
Nagyjából ennyi.
Mi a gond a kipróbálással ? Mi nem megy ?
Üdv.
Konkrétan a véletlensztám generálás :
b:=random(21)-10;
Mivel 21-rgy sohasem lesz, de 20 már igen ebből ha leveszel 10-ert akkor +10-et kapsz. Ha a másik végletet nézzük 0-10 akkor minusz 10.
Üdv.
Én így csinálnám:
program szamgeneral;
uses crt;
var
veletlenSzam, osszParos, osszParatlan: integer;
vegJel : char;
begin
osszParos:=0;
osszParatlan:=0;
vegJel:='a';
Randomize;
writeln('Szamok generalasa folyamatban...');
writeln('A kilepeshez nyomj 0-t!');
repeat
veletlenSzam:=Random(20)-10;
if (veletlenSzam mod 2) <> 0 then osszParatlan:=osszParatlan+veletlenSzam
else osszParos:=osszParos+veletlenSzam;
if KeyPressed() then vegJel:=ReadKey();
until vegJel='0';
writeln('A paros szamok osszege: ',osszParos);
writeln('A paratlan szamok osszege: ',osszParatlan);
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!