Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Помогите, пожалуйста, найти ошибку (http://www.tehnari.ru/f41/t101012/)

Vikesiya 07.02.2015 22:10

Помогите, пожалуйста, найти ошибку
 
Весь день пытаюсь,не пойму что не так делаю..Надо написать именно как я, двумя программами.
задание:1.Составить файл,где будет записана фамилия,имя,отчество,год рождения,пол,оценка по физике,математике,информатике,стипендия. (надеюсь нормально составила задание,хотя по программа наверно понятно, но эта программа у меня вроде правильная,со второй не выходит...)
2. Для студентов имеющих "5" по физике,вывести фамилию,имя,отчество,средний балл и стипендию. (из составленного нами файла)

Первая:
Код HTML:

Program project;
Type
Studdan=record
                FIO:string[50];
                GR:integer;
                Pol:string[2];
                MOF:integer;
                MOM:integer;
                MOI:integer;
                Step:real;
                end;
Var
  fname:string[40];
  anheta:studdan;
  fp:file of studdan;
  n:char;
Begin
  Writeln('Введите имя обр файла');
  Readln (fname);
  assign(fp,fname);
  rewrite(fp);
  n:= 'y';
  while n='y' do
    begin
        write('ФИО:');
        readln(anheta.FIO);
        write('год рождения:');
        readln(anheta.GR);
        write('пол:');
        readln(anheta.POL);
        write('оценка по физике:');
        readln(anheta.MOF);
        write('ценка по математике:');
        readln(anheta.MOM);
        write('оценка по информатике:');
        readln(anheta.MOI);
        write('стипендия:');
        readln(anheta.STEP);
        write(fp,anheta);
        write('Продолжать ввод?(y/n)');
        readln(n);
      end;
  close(fp);
end.

Вторая:
Код HTML:

Program project;
Type
Studdan=record
                FIO:string[50];
                GR:integer;
                Pol:string[2];
                MOM:integer;
                MOI:integer;
                Step:real;
                SR:real;
                MOF:integer;
                end;
Var
  t,fname:string[40];
  anheta:studdan;
  fp:file of studdan;
  k:integer;
Begin
  Writeln('Введите имя обр файла');
  Readln (fname);
  assign(fp,fname);
  reset(fp);
  writeln('искомые студенты');
  Readln (t);
  k:=0;
  while not eof(fp) do
begin
      read(fp,anheta);
      if(anheta.MOF=5) then
 BEGIN
anheta.SR:=((anheta.MOF+anheta.MOM+anheta.MOI)/3);
 K:=K+1;
 writeln(anheta.FIO,anheta.SR,anheta.STEP);   
end;
end;
if k=0 then
      writeln('искомых студентов нет');
      close(fp);
      readln;
end.


Vladimir_S 07.02.2015 22:33

Ну так всё ясно: у Вас в двух программах - разные записи, отличающиеся количеством и расположением полей! Абсолютно недопустимо. Запись во второй программе должна быть ПОЛНОСТЬЮ идентична записи в первой. Средний балл можно считать как простую переменную, нечего ему вообще в записи делать. Т.е. нашли студента, у которого 5 по физике, ну и сосчитайте да выведите среднюю оценку - в запись-то зачем ее пихать?


Часовой пояс GMT +4, время: 21:44.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.