Pascal |
Nekem most sem megy.Pontosan ezt írtam le, de még most sem működik.
Nem indítja el.
Na leírom, hogy mi az amit be kell írni a videó alapján, mert a videó tényleg egy kicsit zavaros
uses crt;
var
a,n,s,i:longint;
begin
clrscr;
writeln('Add meg a jegyeid számát:');
readln(n);
for i:=1 to n do begin
writeln('Add meg az osztályzatodat:');
readln(a);
s:=s+a;
end;
writeln('A Jegyeid átlaga:',s/n:6:2);
readln;
end.
A fenti kód viszont tartalmaz egy pár hibát (ami nem biztos, hogy a program futása közben előjön, de jobb megelőzni a bajt, mint nem érteni, hogy miért nem megy ), amit én javítanék. Szóval a helyes forráskódnak valahogy így kell(ene) kinézni:
program jegyek;
uses crt;
var
a, n, s, i:integer;
begin
clrscr;
writeln('Add meg a jegyeid számát:');
readln(n);
s:=0;
for i:=1 to n do begin
writeln('Add meg az osztályzatodat:');
readln(a);
s:=s+a;
end;
writeln('A Jegyeid átlaga:',s/n:6:2);
readln;
end.
Vagyis az eredeti kódból hiányzik az s változó nullázása, ami így véletlenszerű kezdőértéket vesz fel, ami általában 0, de nem mindig, így illik nullázni a változót (vagyis ez hiányzik az eredeti forráskódból: s:=0.
a program legelső sora úgy szabványos, ha tartalmazza a "program" parancsot, és egy nevet, ami jelen esetben lehet jegyek, vagy osztályzat (vagy bármi ).
valamint még egy módosítás:
ebben a sorban: a,n,s,i:longint;
a longintet átírtam integer-re, ugyanis nem hinném, hogy bárki is több, mint 6000 jegy átlagát szeretné ilyen módon kiszámolni, így elég az integer tartomány is (ami egészen 32767-ig tudja a számokat tárolni, ami bőven elég). Természetesen nem kötelező integert használni a longint helyett, de érdemes a megfelelő típusú változót használni, ami jelenleg az integer
Mindenkitől elnézést kérek, hogy ilyen hosszú lett a hozzászólásom, de jó pár ezer sornyi program megírása után már kötelességemnek érzem, hogy mindenki a helyes alapokat tanulja meg.
Nemtudom nektek mi a bajotok vele.
Egy kicsit javítottam rajta és tökéletesen megy.