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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2010, 22:09   #1
imedved
 
Регистрация: 17.12.2010
Сообщений: 4
Восклицание Pascal, работа с файлами.

Составить программу создания файла, содержащего сведения об объектах для варианта задания. Программа должна обеспечить ввод исходных данных с клавиатуры, запись исходной информации в файл, чтение и вывод на экран созданного файла. Выполнить программу обработки файла.
Имя объекта: Студент;
Поля записи: ФИО студента, группа, оценки по 4 экзаменам;
Задачи обработки: Подсчитать и вывести на экран средний балл, полученные каждым студентом группы X.
Нужно сделать без использования массивов.

Вот попробовал сделать задание:
Код:
program lab_10;
uses crt;
type
 book=record
        fio: string[30];
       group: string[20];
       score: integer;
      end;
 data_b=array[1..100] of book;
var
 db: data_b;
 db_zero: data_b;
 kol_vo,oper: integer;
 ext: boolean;
 f: text;

procedure IN_1 (var m: data_b; var a: integer);
var i:integer;
begin
 m:=db_zero;
 clrscr;
 write ('Введение количество записей: ');
 readln(a);
 clrscr;
 for i:=1 to a do
  with m[i] do
  begin
   write ('ФИО: '); readln(fio);
   write ('Группа: '); readln(group);
   write ('Оценки: '); readln(score);
   clrscr;
  end;
end;

procedure OUT (var m: data_b; a: integer);
var i:integer;
begin
 clrscr;
 writeln ('Вывод данных: ');
 for i:=1 to a do
  with m[i] do
  writeln(fio,' ',group,' ',score);
 repeat until keypressed;
end;

procedure OBR;

Вычислить среднее арифметическое по 4 экзаменам. Не знаю как реализовать. Без массивов.



 writeln ('обработка выполнена');
 readln;
 clrscr;
end;

procedure info (var a: integer);
begin
 clrscr;
 writeln ('1-ввести записи');
 writeln ('2-вывести записи');
 writeln ('3-обработать записи');
 writeln ('4-записать в файл');
 writeln ('5-чтение из файла');
 writeln ('6-выход');
 writeln;
 readln(a);
 clrscr;
end;

procedure file_IN (var f: text; a: integer; m: data_b);
var i: integer;
begin
 rewrite(f);
 for i:=1 to a do
 with m[i] do
 begin
   write (f,fio,' ');
   write (f,group,' ');
   writeln (f,score,' ');
  end;
 close(f);
 write ('База Данных сохранена в файл');
 readln;
end;

procedure file_OUT (var f: text; var a: integer; var m: data_b);
var i,j,z,x: integer;
    str: string;
    ye: string[4];
begin
 m:=db_zero;
 reset(f);
 i:=0; z:=0;
 while (not eof(f)) do
 begin
  i:=i+1;
  with m[i] do
  begin
   readln(f,str);
   for j:=1 to length(str) do begin
    if (str[j]<>' ') and (z=0) then fio:=fio+str[j];
    if (str[j]<>' ') and (z=1) then name:=group+str[j];
    if (str[j]<>' ') and (z=2) then score:=score+str[j];
    if str[j]=' ' then z:=z+1;
    val(score,x);
   end;
   z:=0;
   ye:='';
  end;
 end;
 close (f);
 a:=i;
 write('Файл прочитан');
 readln;
end;

begin
 assign (f,'db.txt');
 ext:=false;
 info(oper);
 repeat
  case oper of
       1: IN_1(db,kol_vo);
       2: OUT(db,kol_vo);
       3: OBR(db,kol_vo);
       4: file_IN (f,kol_vo,db);
       5: file_OUT (f,kol_vo,db);
       6: ext:=true;
  end;
  if oper<>6 then info(oper);
  clrscr;
 until ext=true;
end.
Подскажите пожалуйста что здесь не правильно и как среднее арифметическое рассчитать.
imedved вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами(Pascal Mekkeliard Помощь студентам 2 07.12.2010 15:56
pascal: работа с файлами mister.gun Помощь студентам 7 14.03.2010 10:38
Pascal работа с файлами A.S.W Помощь студентам 1 07.01.2010 19:01