Witam,
mam poniższy kod (wiem, że nie zoptymalizowany, na razie próbuję go złożyć żeby działał, później będę go skracał ):
program project1;
Uses CRT, SysUtils;
Type
Tdane =record
Imie : string[20];
Nazwisko: string[20];
Ocena : array[1..5] of byte;
//Przedmiot : array[1..10] of string;
end;
var uczen1, uczen2, uczen3, uczen4, uczen5 : TDane;
name, surname : string;
licznik,a : byte;
subjects : array[1..5] of string = ('Matematyka','Fizyka','Jezyk polski','WF','Historia');
mark : array[1..5] of byte;
procedure przypisz(licznik:byte);
begin
if licznik=1 then
begin
uczen1.imie:=name;
uczen1.nazwisko:=surname;
for a:=1 to 5 do
begin
uczen1.ocena[a]:=mark[a];
end;
clrscr;
end;
if licznik=2 then
begin
uczen2.imie:=name;
uczen2.nazwisko:=surname;
for a:=1 to 5 do
begin
uczen2.ocena[a]:=mark[a];
end;
clrscr;
end;
if licznik=3 then
begin
uczen3.imie:=name;
uczen3.nazwisko:=surname;
for a:=1 to 5 do
begin
uczen3.ocena[a]:=mark[a];
end;
clrscr;
end;
if licznik=4 then
begin
uczen4.imie:=name;
uczen4.nazwisko:=surname;
for a:=1 to 5 do
begin
uczen4.ocena[a]:=mark[a];
end;
clrscr;
end;
if licznik=5 then
begin
uczen5.imie:=name;
uczen5.nazwisko:=surname;
for a:=1 to 5 do
begin
uczen5.ocena[a]:=mark[a];
end;
clrscr;
end;
end;
procedure wyswietl;
begin
clrscr;
With uczen1 do
Writeln(imie,' ',nazwisko,' ',mark[1]);
With uczen2 do
Writeln(imie,' ',nazwisko,' ',mark[1]);
With uczen3 do
Writeln(imie,' ',nazwisko,' ',mark[1]);
With uczen4 do
Writeln(imie,' ',nazwisko,' ',mark[1]);
With uczen5 do
Writeln(imie,' ',nazwisko,' ',mark[1]);
end;
begin
write('Wcisnij [ENTER] aby dodac dane osobowe uczniow');
readln();
clrscr;
licznik:=1;
repeat
writeln('[UCZEN ',licznik,']');
write('Imie: ');
readln(name);
write('Nazwisko: ');
readln(surname);
//for a:=1 to 5 do
a:=1;
repeat
begin
write('Ocena z ',subjects[a],':');
readln(mark[a]);
a:=a+1;
end;
until a>5;
przypisz(licznik); //przypisuję uczniom dane
licznik:=licznik+1;
until licznik>5;
readln;
wyswietl;
readln;
end.
Wszystko działa oprócz wczytywania ocen:
a:=1;
repeat
begin
write('Ocena z ',subjects[a],':');
readln(mark[a]);
a:=a+1;
end;
until a>5;
Do jednego przedmiotu (subjects[a]) ma wczytać jedną ocenę (marka[a]). Przedmiotów jest 5, wiec powinno dla każdego ucznia zapamiętać 5 ocen.
Jednak po wywołaniu procedury (wyswietl), w której na sztywno ustawiłem wyświetlanie tylko pierwszych ocen (tylko z matmy - subjects[1] to matematyka) - niestety każdemu uczniowi zawsze wyświetla pierwszą ocenę ostatniego ucznia
Wpisywałem:
uczeń1: 1 2 3 4 5
uczeń2: 2 3 4 5 6
uczeń3: 3 4 5 6 1
uczeń4: 4 5 6 1 2
uczeń5: 5 6 1 2 3
Otrzymałem:
uczeń1: 5
uczeń2: 5
uczeń3: 5
uczeń4: 5
uczeń5: 5
Chce uzyskać:
uczeń1: 1
uczeń2: 2
uczeń3: 3
uczeń4: 4
uczeń5: 5
Prosiłbym o szybką pomoc, bo gonią mnie terminy
Za wszelkie uwagi i pomysły serdecznie dziękuję