Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2010, 20:45   #1
Гамбит
Пользователь
 
Аватар для Гамбит
 
Регистрация: 19.10.2009
Сообщений: 83
По умолчанию Файл записей. Паскаль

Доброго времени суток! прошу помочь в решении задачи.

14. В файле хранится информация о каждом студенте группы: фамилия и оценки по трем предметам. Переписать эти данные в другой файл записей, исключая сведения о неуспевающих студентах.

Код:
Program lab_9;
uses crt;
type zap=record
         name:string;
         mark1,mark2,mark3:byte;
         end;
     ff=file of zap;
Function sum(a:zap):byte;
begin
sum:=a.mark1+a.mark2+a.mark3;
end;
Procedure all(a:zap);
var f1,f2:ff; i,n,sum:byte; s:string;
begin
assign(f1,s);
rewrite(f1);
Write('input n-');Readln(n);
For i:=1 to n do
begin
write('name-');Readln(a.name);
write('ocenka1-');Readln(a.mark1);
write('ocenka2-');Readln(a.mark2);
write('ocenka3-');Readln(a.mark3);
end;
close(f1);
reset(f1);
assign(f2,s);
rewrite(f2);
while not eof(f1) do
begin
readln(f1,s);
if sum>=12 then
Writeln(f2,s);
end;
close(f1);
close(f2);
end;
var a:zap;
begin
all(a);
readln;
end.

вот что у меня получилось
Гамбит вне форума Ответить с цитированием
Старый 01.02.2010, 21:29   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) не проверял, но это не должно даже компилироваться!
для типизированных файлов не может быть Readln (как и WriteLn) - это для текстовых файлов, для типизированных только write и read
2) а где собственно запись данных в первый файл?!!!
должно быть так:
Код:
For i:=1 to n do
begin
  write('name-');Readln(a.name);
  write('ocenka1-');Readln(a.mark1);
  write('ocenka2-');Readln(a.mark2);
  write('ocenka3-');Readln(a.mark3);
  write(f1,a);
end;
close(f1);
ну и небольшие недочёты
3) для оценок удобнее завести массивчик. хотя, для трёх оценок можно и так оставить.
4) неуспевающие - это не те, у кого сумма меньше 12, а те, у кого нет оценок ниже тройки! (сравните пять, пять и два) это неуспевающий. а три, три, три - успевающий студент!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.02.2010, 22:04   #3
Гамбит
Пользователь
 
Аватар для Гамбит
 
Регистрация: 19.10.2009
Сообщений: 83
По умолчанию

Код:
Program lab_9;
uses crt;
type zap=record
         name:string;
         mark1,mark2,mark3:byte;
         end;
     ff=file of zap;
Function sum(a:zap):byte;
begin
sum:=a.mark1+a.mark2+a.mark3;
end;
Procedure all(a:zap);
var f1,f2:ff; i,n,sum:byte; s:string;
begin
assign(f1,s);
rewrite(f1);
Write('input n-');Readln(n);
For i:=1 to n do
begin
write('name-');Readln(a.name);
write('ocenka1-');Readln(a.mark1);
write('ocenka2-');Readln(a.mark2);
write('ocenka3-');Readln(a.mark3);
write(f1,a);
end;
close(f1);
reset(f1);
assign(f2,s);
rewrite(f2);
while not eof(f1) do
begin
read(f1,a);
if (a.mark1>3) and (a.mark2>3) and (a.mark3>3) then
Write(f2,a);
end;
close(f1);
close(f2);
end;
var a:zap;
begin
all(a);
readln;
end.
теперь правильно?
Гамбит вне форума Ответить с цитированием
Старый 01.02.2010, 22:08   #4
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию

а работает?
Namolem вне форума Ответить с цитированием
Старый 01.02.2010, 22:17   #5
Гамбит
Пользователь
 
Аватар для Гамбит
 
Регистрация: 19.10.2009
Сообщений: 83
По умолчанию

нет =) я чёт с выводом накосячил
Гамбит вне форума Ответить с цитированием
Старый 01.02.2010, 22:27   #6
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию

assign(f1,s);

а чему равно S ?
Namolem вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сформировать файл записей (pascal) feeras Помощь студентам 4 27.12.2009 12:14
Как создать файл с набором записей? Alexsey1991 Помощь студентам 4 18.12.2009 07:31
Создать файл записей (таблицу) и вывести на экран информацию о людях (имя, год рожденя, день рождения) пепелаЦО Паскаль, Turbo Pascal, PascalABC.NET 3 24.05.2009 12:15
Массивы записей. Паскаль MMARKIN Помощь студентам 2 20.04.2009 19:01
Представить данные о студентах института в виде массива записей. Паскаль. menlo Помощь студентам 3 12.12.2007 20:40