IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> задачи по файлам, помогите найти ошибку!
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


задача: создать файл, содержащий сведения о сдаче студентами сессии и организовать поиск по ФИО.

Вот прога:
program q;
type ekz=record
gr:string;
fio:string;
ex:array[1..5] of integer end;
var spf:file of ekz;
spr:ekz;
rej,i:integer; f:string; c:char;
procedure sozd;
begin
rewrite(spf);
with spr do begin
writeln('введите группу');
readln(gr);
writeln('введите ФИО');
readln(fio);
writeln('введите 5 оценок по экзаменам');
for i:=1 to 5 do begin write(i,'-ая оценка');
readln(ex[i]) end;
write(spf,spr);
writeln('продолжить ввод? y/n');
read©;
if (c='n') or (c='N') then exit; end;
end;
procedure obr;
begin
reset(spf);
writeln('введите ФИО для поиска');
readln(f);
with spr do while not Eof(spf) do begin
read(spf,spr);
if f=fio then begin writeln('ФИО:',fio:30,'группа:',gr:7);
writeln('оценки:');
for i:=1 to 5 do write(ex[i]:4,',') end;
close(spf)
end;
begin
assign(spf,'D:\spis.txt');
while true do
begin
writeln('меню:');
writeln('1: создание списка;');
writeln('2: поиск по ФИО студента;');
writeln('3: выход');
readln(rej);
case rej of
1: sozd;
2: obr;
3: halt;
else writeln('ошибка!!! повторите ввод'); end; end;
end.


требует ; после последнего end перед точкой.

Сообщение отредактировано: PaPoV -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Ну, желательно соблюдать отступы - будет легче.
Но если уже такой код, то для форматирования воспользуйся штатной к FreePascal утилитой ptop (её обсуждение "http://forum.pascal.net.ru/index.php?showtopic=24653").

Program q;

Type ekz = Record
gr: string;
fio: string;
ex: array[1..5] Of integer
End;

Var spf: file Of ekz;
spr: ekz;
rej,i: integer;
f: string;
c: char;
Procedure sozd;
Begin
rewrite(spf);
With spr Do
Begin
writeln('введите группу');
readln(gr);
writeln('введите ФИО');
readln(fio);
writeln('введите 5 оценок по экзаменам');
For i:=1 To 5 Do
Begin
write(i,'-ая оценка');
readln(ex[i])
End;
write(spf,spr);
writeln('продолжить ввод? y/n');
read©;
If (c='n') Or (c='N') Then exit;
End;
End;
Procedure obr;
Begin
reset(spf);
writeln('введите фио для поиска');
readln(f);
With spr Do
While Not Eof(spf) Do
Begin
read(spf,spr);
If f=fio Then
Begin
writeln('ФИО:',fio:30,'группа:',gr:7);
writeln('оценки:');
For i:=1 To 5 Do
write(ex[i]:4,',')
End;
close(spf)
End;
Begin
assign(spf,'D:\spis.txt');
While true Do
Begin
writeln('меню:');
writeln('1: создание списка;');
writeln('2: поиск по фамилии');
writeln('3: выход');
readln(rej);
Case rej Of
1: sozd;
2: obr;
3: halt;
Else writeln('ошибка!!! повторите ввод');
End;
End;
End.

Здесь лучше видно отсутствие end в процедуре obr.

Сообщение отредактировано: Федосеев Павел -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 11.09.2025 20:23
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name