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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2012, 22:26   #1
Alerq
 
Регистрация: 06.04.2011
Сообщений: 6
По умолчанию создать типизированный файл, в который записать Фамилию, имя, возраст, средний бал, телефон учащегося.

Задача: создать типизированный файл, в который записать Фамилию, имя, возраст, средний бал, телефон учащегося. Вот, что у меня получилось, но выдает ошибку "Ожидался конец файла". Найдите ошибку. Спасибо.
Код:
Program pro;
uses crt;
type anketa=record
    fam:string[20];
    im:string[12];
    voz: 1..18;
    at: real;
    tel: integer;
 end;
 var i,n:integer;
     student: anketa;
     f:file of anketa;
 begin
 clrscr;
 assign(f,'C:\PABCWork.NET\St.dat');
 reset(f);
 Write('Введите количество новых учащихся');
 Readln(n);
 For i:=1 to n do 
 Write('Введите Фамилию учащегося:');
 Readln(student.fam);
 Write(f,student.fam,'  ');
 Write('Введите Имя учащегося:');
 Readln(student.im);
 Write(f,student.im,'  ');
 Write('Введите Возраст учащегося:');
 Readln(student.voz);
 Write(f,student.voz,'  ');
 Write('Введите Средний бал аттестата учащегося:');
 Readln(student.at);
 Write(f,student.at,'  ');
 Write('Введите Телефон учащегося:');
 Readln(student.tel);
 Writeln(f,student.tel);
 end;
 close(f);
 readkey;
 end.

________
1) Название темы по правилам форума должно адекватно отражать суть решаемой задачи/проблемы.
На первый раз я исправил.
В последующем, темы с подобным названием будут закрываться или удаляться,
а автор такой темы будет получать штрафные баллы.


2) Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)

Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 21.02.2012 в 23:03.
Alerq вне форума Ответить с цитированием
Старый 21.02.2012, 22:34   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Код:
reset(f);
Reset - это для чтения с файла, а не для записи в него
используйте rewrite
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 22.02.2012, 00:22   #3
Alerq
 
Регистрация: 06.04.2011
Сообщений: 6
По умолчанию

Не помогло.
Rewrite, как нам объяняли, перезаписывает файл. Всмысле стирает и открывает для работы. Тоесть если я 1 раз впишу в файл данные 5 учеников, а потом запущу прогу 2й раз чтобы еще 3х добавить, то первые 5 сотрутся, как я понимаю...
Alerq вне форума Ответить с цитированием
Старый 22.02.2012, 00:46   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

тогда Append юзайте!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 22.02.2012, 09:34   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Alerq, у Вас было ОЧЕНЬ много принципиальных ошибок.

похоже, что Вы не понимаете, что такое типизированный файл и как с ним работать.

предлагаю ещё раз изучить теорию (лекции + книжки).

а ещё можете разобрать пример решения вашей задачи:
Код:
program pro;
uses crt;

const DataFileName = 'C:\PABCWork.NET\St.dat';

type anketa = record
    fam: string[20];
    im: string[12];
    voz: 1..18;
    at: real;
    tel: integer;
  end;
var i, n: integer;
  student: anketa;
  f: file of anketa;
begin
  clrscr;
  assign(f, DataFileName );
  if not FileExists( DataFileName ) 
    then Rewrite(f)
    else begin reset(f); seek(f, FileSize(f)) end;
  Write('Введите количество добавляемых записей об учащихся: (или число < 0 - чтобы просто распечатать файл) : ');
  Readln(n);
  if n>0 then 
  for i := 1 to n do begin
    Write('Введите Фамилию учащегося:');
    Readln(student.fam);
    Write('Введите Имя учащегося:');
    Readln(student.im);
    Write('Введите Возраст учащегося:');
    Readln(student.voz);
    Write('Введите Средний бал аттестата учащегося:');
    Readln(student.at);
    Write('Введите Телефон учащегося:');
    Readln(student.tel);
    Write(f, student);
  end
  else begin
     seek(f,0);
     {вывести на экран содержимое файла}
     WriteLn('----------------------------------------------------------------------------');
     WriteLn('| NN  |    Фамилия         |   Имя      |   Возраст  | Средн.бал | Телефон |');
     WriteLn('----------------------------------------------------------------------------');
     for i:=1 to FileSize(f) do begin
        Read(f, student );
        with student do
          WriteLn('|',i:4,' |', fam:20,'|',im:12,'|', voz:11, ' | ', at:9:2, ' | ', tel:8, '|'  );
     end;
     WriteLn('----------------------------------------------------------------------------');
  end;
  
  close(f);
  WriteLn('Нажмите любую клавишу для завершения программы...');
  readkey;
end.

p.s. в связи с тем, что вы, по всей видимости, выполняете работу в PascalABC.NET я позволил себе использовать в программе имеющуюся там функцию FileExists(), для TurboPascal это кусок кода нужно чуть-чуть изменить...

Последний раз редактировалось Serge_Bliznykov; 22.02.2012 в 09:39.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
EXCEL. Создать макрос, который в любую ячейку выводит Вашу фамилию и инициалы. Дашкаа Помощь студентам 1 20.06.2011 20:04
Вычислить средний бал учеников класса Aimet Паскаль, Turbo Pascal, PascalABC.NET 0 16.06.2011 20:56
Ввести имя, фамилию и отчество в строку. Найти длину строки, вывести фамилию в обратном порядке (Delphi) --PapaZi-- Помощь студентам 7 27.03.2011 22:44
как прочитать из файла имя, фамилию разделенные пробелами и записать их в массив парами Rom@shka Общие вопросы C/C++ 2 13.12.2008 16:40
создать типизированный файл который будет использоваться в Методе Гаусса vdv08 Помощь студентам 5 23.10.2008 15:17