Файлы.Паскаль.Записи

Ответить
Belton
Сообщения: 1
Зарегистрирован: 16 дек 2008, 17:29

Люди прошу прощения что пишу в чужой теме...

Пожалуста кто нибудь напишите 2 проги до после завтра, вообще не понимаю как делать.
1)В файл заносятся сведения о жителях некоторой улицы:фамилия, адрес, год рождения. Все сведения записываются в памяти в виде линейного списка. Вводится некоторая текущая дата. В списке сведений найти всех жителей, имеющих право участвовать в выборах(возраст =\> 18 ). Список полученных сведений вывести на экран.
2)В N файлах создать свединия о студентах N групп. Формат сведений:№ группы, порядковый номер, фамилия,имя,отчество. Выбрать всех однофамильцев из всех групп и сформировать из них последовательность. Обеспечить вывод сведений каждой группы и результата поисков.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Перемещено в отдельную тему
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Смотрим раздел "Алгоритмы". Было там такое.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Intagar
Сообщения: 2
Зарегистрирован: 28 дек 2008, 17:32

Подскажите пожалуйста где ошибка. В задаче нужно создать файл, в котором будет содержаться информация об N студентах (фамилия, имя, дата рождения). Считывая данные из файла определить какие студенты родились зимой и вывести их иммена и фамилии.

Код: Выделить всё

uses crt;
type data=record
     name:string[20];
     surname:string[20];
     birthday:integer;
     birthmonth:integer;
     birthyear:integer;
     end;
var grupa:file of data;
    student:data;
    i, n, m:integer;
    pv:boolean;
    st:char;
procedure create_file;
begin
     assign(grupa,'hny.dat');
     reset(grupa);
     rewrite (grupa);
     seek(grupa,i);
     with student do
     begin
          writeln('vvedit imja studenta:');
          readln (name);
          write('vvedit prizvushe studenta:');
          readln (surname);
          write('vvedit den narodjennja studenta:');
          readln (birthday);
          write('vvedit misjac narodjennja studenta:');
          readln (birthmonth);
          write('vvedit rik narodjennja studenta:');
          readln (birthyear);
     end;
end;
procedure zapus;
     begin
     assign(grupa,'hny.dat');
     reset (grupa);
     seek(grupa,i);
     with student do
     write(grupa,student);
     i:=i+1;
     end;
function povtor:boolean;
     begin
     write('bydete vvodutu she? (Y/N)');
     read(st);
     if (st='n')or(st='N') then povtor:=true else povtor:=false;
     end;
begin
     n:=i;
     writeln('shob vidkrutu vje stvorenuj file natusnit 1');
     writeln('shon stvorutu novuj file natusnit 2');
     read(m);
     if m=1 then
     begin
     for i:=0 to n do
     begin
     assign(grupa,'hny.dat');
     reset(grupa);
     seek(grupa,i);
     read(grupa,student);
     if (student.birthmonth)=01 or 02 or 12 then
     begin
     writeln('studentu sho narodulus vzumky');
     write(student.name);
     writeln(' ',student.surname);
     end;
     end;
     end;
     if m=2 then
     begin
     repeat
     create_file;
     until povtor;
     end;
     close(grupa);
     readkey;
     clrscr;
end.
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

rewrite - это открытие файла на запись. reset - на чтение. А вы там какой-то ужас творите, пардон. Открываете файл на чтение и пытаетесь в него писать. И вообще, зачем вам там потребовались типизированные файлы? Не проще ли обойтись обычным текстовым примерно такого формата:
Иван Иванов
1 1 1987
Петр Сидоров
2 2 1988
и т.д.
И чтение из такого файла будет простейшее:
repeat
readln(gruppa, students.fio); readln(gruppa, students.birthday, students.birthmonth, students.birthyear);
i:=i+1;
until not eof(gruppa);
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить