WITAM zrobiłem program. Robi on wszystkie zalecenia zadania. Według mnie jest ono zrobione dobrze ale mój nauczyciel powiedział:
"Niestety program nie działa poprawnie. Nie wczytuje wszystkich danych. Być może jest problem z ustawieniem długości tablicy hęę...?"
tak właśnie... :) nie wiem o co mu chodzi
zadanie brzmi:
Szkoła robi stypendia dla studentów . Minimalne wymagania :
- Ocena średnia nie wyższa niż 3
- Co najmniej drugi rok studiów
- Wiek ponad 40 lat
Informacje o studentach zapisane są w n-elementowej tablicy rekordów postaci: - nazwisko
- średnia ocena
- rok studiów
- wiek
Uporządkować tablicę w ten sposób, że na początku znajdą się osoby, które mogą otrzymać stypendium, a w dalszej części pozostali.
Program główny organizuje wprowadzanie danych, porządkowanie tablicy oraz wyświetlenie listy studentów, zaznaczyć, kto może uzyskać stypendium oraz obliczyć ile jest takich osób.
mój program:
Program Pechowcy;
type
student=record
nazwisko:string;
srednia:real;
rok:byte;
wiek:byte;
stu:byte; {Typ pomocniczy}
end;
tab=array of student;
var
c,k,d,n,z,j,i,q:integer;
x:tab;
r:real;
h:string;
begin
writeln;
writeln;
write('Podaj ile jest studentow: '); readln(n);
writeln;
writeln;
writeln('Podaj info o studentach:');
writeln;
SetLength(x,n);
for z:=1 to n do
begin
writeln;
writeln('Student:');
write('Nazwisko: '); readln(x[z].nazwisko);
write('srednia '); readln(x[z].srednia);
write('rok'); readln(x[z].rok);
write('wiek'); readln(x[z].wiek);
if ( (x[z].srednia<=3) and (x[z].rok>=2) and (x[z].wiek>40)) then
begin
x[z].stu:=0;
end
else
begin
x[z].stu:=1;
end;
end;
{algorytm flagi polskiej}
i:=1;
j:=n;
while(i<j) do begin
while ((x[i].stu=0) and (i<n)) do begin
i:=i+1;
end;
while ((x[j].stu=1) and (j>1)) do begin
j:=j-1;
end;
if (j>i) then
begin
h:=x[i].nazwisko;
x[i].nazwisko:=x[j].nazwisko;
x[j].nazwisko:=h;
r:=x[i].srednia;
x[i].srednia:=x[j].srednia;
x[j].srednia:=r;
k:=x[i].rok;
x[i].rok:=x[j].rok;
x[j].rok:=k;
d:=x[i].wiek;
x[i].wiek:=x[j].wiek;
x[j].wiek:=d;
q:=x[i].stu;
x[i].stu:=x[j].stu;
x[j].stu:=q;
end;
i:=i+1;
j:=j-1;
end;
writeln;
writeln(' LISTA: ');
writeln('------------------------------------------------');
writeln;
for z:=1 to n do
begin
writeln('Student:');
writeln('Nazwisko: ',x[z].nazwisko);
writeln('Srednia Ocen: ',x[z].srednia:1:2);
writeln('Rok: ',x[z].rok);
writeln('Wiek: ',x[z].wiek);
if (x[z].stu=0) then begin writeln('Stypendium przyznane');
writeln('-------------------------------------------------');
writeln;
end;
if (x[z].stu=1) then begin writeln('Stypendium nieprzyznane');
writeln('-------------------------------------------------');
writeln;
end;
end;
for z:=1 to n do
begin
if (x[z].stu=0) then
c:=c+1;
end;
writeln;
writeln('Liczba studentow ktorzy otrzymaja stypendium: ',c);
writeln;
readln;
end.
Proszę o pomoc o co chodzi mojemu nauczycielowi???