Помощь - Поиск - Пользователи - Календарь
Полная версия: Файлы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
asxc
понимаете осталась последняя задача и я её не как написать не могу в программу.
помогите кто может пожалуйста

Файл включает фамилию студента и их оценки по трём предметам в сессии. Распечатать по вводимой фамилии - оценки, а кроме того список студентов, получивших степендию ( не имеющих 2 и 3), получивших повышеную степендию(тока 5)
amega
ну во первых обявляем тип
 
Type
Tname=string[20];
Trec=record
name1:Tname;
ball: array [1..3] of integer;
end;
TArrRec=array [1..50] of trec;
Tfile = file of Trec;



потом считываем из файла в масивж


procedure Addfromfile(var s:TarrRec; var count:integer; f:Tfile);
begin
assign(f,'file.rec');
reset(f);
count:=0;
while not eof(f) do begin
count:=count+1;
read(f,s[count]);
end;
close(f);
end;



далее пишем процедуру которая выдает по имени бал



procedure showball(a:TarrRec; count:integer; s:Tname);
var i,j:integer;
begin
for i:=1 to count do
begin
if a[i].name1=s then begin

for j:=1 to 3 do
writeln(a[i].name1,' ',a[i].ball[1],' ',a[i].ball[2]' ',a[i].ball[3]);


end;
end;





список студентов которые только 5

procedure showball2(a:TarrRec; count:integer);
var i:integer;
begin
for i:=1 to count do
if (a[i].ball[1]=5) and (a[i].ball[2]=5) and (a[i].ball[3]=5) then
writeln(a[i].name1,' ',a[i].ball[1],' ',a[i].ball[2]' ',a[i].ball[3]);
end;





также для 2 и 3

ну и теперь все процедури вызиваеш в програмке.
volvo
Цитата
потом считываем из файла в масив
Сначала надо исправить заголовок процедуры, иначе она у тебя даже не откомпилируется:
procedure Addfromfile(var s:TarrRec; var count:integer; VAR f:Tfile);
, потому что Var в заголовке действует до первой ";"... А файл должен быть только параметром-переменной.
amega
помоему лудше вобще вот так зделать


procedure Addfromfile(var s:TarrRec; var count:integer);
var
f:Tfile
begin
assign(f,'file.rec');
reset(f);
count:=0;
while not eof(f) do begin
count:=count+1;
read(f,s[count]);
end;
close(f);
end;



asxc
procedure showball2(a:TarrRec; count:integer);
var i:integer;
begin
for i:=1 to count do
if (a[i].ball[1]=5) and (a[i].ball[2]=5) and (a[i].ball[3]=5) then
writeln(a[i].name1,' ',a[i].ball[1],' ',a[i].ball[2]' ',a[i].ball[3]);
end;


здесь 113 ошибку выдает
volvo
Цитата
113 ошибку выдает
Там должна быть не 113-я, а 89-я ошибка, потому что запятая после ball[2] пропущена.
asxc
а остальное все правильно?
asxc
незнаю почему но программа вообще не работает
Ozzя
Текст полный программы выложи.
volvo
Цитата
незнаю почему но программа вообще не работает
Это не диагностика... Я тоже не знаю, почему твоя программа, которую ты не показал здесь, у тебя не работает. Приводи программу полностью, + то, что ВВОДИЛ, то, что ДОЛЖНО выводить, и то, что выводит у тебя. Тогда, возможно, на твои реплики кто-то обратит внимание. Пока - это пустое сотрясание воздуха.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.