Kezdőoldal » Számítástechnika » Programozás » Miért írja ki így?

Miért írja ki így?

Figyelt kérdés

Ez egy pascalos feladat:


Készítsünk programot, amely ki fogja kérdezni a matematikát (két szám összeadását, kivonását és szorzását az <1,10> intervallumból). A két számot és a műveletet a számítógép véletlenszerűen válassza ki. A program akkor fejeződjön be, ha a felhasználó 10 példát kiszámolt helyesen. Rossz válasz esetén kérdezze újra ugyanazt a példát. A program végén írjuk ki az eredményességet százalékokban.


A megoldásom:


program matek;

var a, b, j, e, m, sz, r, o:Integer;

Begin

Randomize;

m:=0;

Repeat

r:=0;

a:=1+random(10);

b:=1+random(10);

j:=1+random(3);

case j of

1:Begin

Repeat

Write(a,'+',b,'=');

ReadLn(e);

if (a+b=e) and (r=0) then

inc(sz)

else r:=1;

inc(o);

until a+b=e;

inc(m);

end;

2:Begin

Repeat

Write(a,'-',b,'=');

ReadLn(e);

if (a-b=e) and (r=0) then

inc(sz)

else r:=1;

inc(o);

until a+b=e;

inc(m);

end;

3:Begin

Repeat

Write(a,'*',b,'=');

ReadLn(e);

if (a+*b=e) and (r=0) then

inc(sz)

else r:=1;

inc(o);

until a+b=e;

inc(m);

end;

end;

until m=10;

WriteLn('Százalékban jó megoldásaid: ',sz/o*100,'%');

ReadLn;

End.


Ezzel csak annyi a problémám, hogy ezt írja ki például a végén:


Százalékban jó megoldásaid: 1.0000000000000000E+0002%


nem értem.


Előre köszönöm válaszaitokat!



2012. nov. 5. 19:09
 1/5 A kérdező kommentje:

A végén mást ír bocsi:


8.1818181818181818E+0001%

2012. nov. 5. 19:12
 2/5 iostream ***** válasza:

8.1818181818181818E+0001

Ez a "tudományos" jelölése a törtszámoknak, hívjuk normál alaknak is.

8.1818181818181818 az alap, és az E (ami az exponent, hatvány szóra utal) után van, hogy 10 a hanyadikonnal kell szorozni. Tehát

8.1818181818181818 * 10^1 = 81.818181818181818


Ugyanígy fentebb: 1.000000E+0002

1.000000 * 10^2 = 100


[link]

Itt van egy jó válasz a real formázásáról.

2012. nov. 5. 19:58
Hasznos számodra ez a válasz?
 3/5 ejbenjaro ***** válasza:

Próbáld így kiíratni:

WriteLn('Százalékban jó megoldásaid: ',sz/o*100:4:2,'%');

2012. nov. 5. 20:00
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:

"Write(a,'*',b,'='); " itt szorzatot íratsz ki, aztán meg összeget "until a+b=e; " ellenőrzöl. Ez meg mi? (a+*b=e)

sz és o válzozónak nincs kezdőérték adva. Meg had ne soroljam tovább a hibákat.

8.1818181818181818E+0001 = 8.181818... szor 10 az elsőn. 81 egész 8181 stb. normálalakba.

sz/o*100 helyett sz/o*100:0:4 így 4 tizedes jegyig írja ki.

2012. nov. 5. 20:10
Hasznos számodra ez a válasz?
 5/5 A kérdező kommentje:

Köszönöm a válaszokat.


Neharagudjatok a hibákért csak gyorsan irtam.

2012. nov. 5. 20:11

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!