Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Файлы

Автор: asxc 5.02.2009 21:52

понимаете осталась последняя задача и я её не как написать не могу в программу.
помогите кто может пожалуйста

Файл включает фамилию студента и их оценки по трём предметам в сессии. Распечатать по вводимой фамилии - оценки, а кроме того список студентов, получивших степендию ( не имеющих 2 и 3), получивших повышеную степендию(тока 5)

Автор: amega 6.02.2009 2:15

ну во первых обявляем тип

 
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 6.02.2009 2:47

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

Автор: amega 6.02.2009 23:46

помоему лудше вобще вот так зделать


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 7.02.2009 2:19

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 7.02.2009 2:36

Цитата
113 ошибку выдает
Там должна быть не 113-я, а 89-я ошибка, потому что запятая после ball[2] пропущена.

Автор: asxc 7.02.2009 16:10

а остальное все правильно?

Автор: asxc 10.02.2009 17:10

незнаю почему но программа вообще не работает

Автор: Ozzя 10.02.2009 17:21

Текст полный программы выложи.

Автор: volvo 10.02.2009 17:23

Цитата
незнаю почему но программа вообще не работает
Это не диагностика... Я тоже не знаю, почему твоя программа, которую ты не показал здесь, у тебя не работает. Приводи программу полностью, + то, что ВВОДИЛ, то, что ДОЛЖНО выводить, и то, что выводит у тебя. Тогда, возможно, на твои реплики кто-то обратит внимание. Пока - это пустое сотрясание воздуха.