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