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

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

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

> типизированные файлы, что-то не работает
Bast
сообщение 3.01.2008 21:22
Сообщение #1


Новичок
*

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

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


Разработайте программу вывода файла содержащего некоторые данные. Сведенья о сдаче студентами сесии:
-номер группы;
-фио;
-оценка по 5 экзаментам и зачетам(зачет\незачет).
Вот собственно код
Uses
Crt;
Type
Book = Record
fam:String[20];
name:String[20];
otch:String[20];
End;
Zap=Record
Fio:Book;
n_grup:String[6];
ocenki:String[1];
Zachet:string[7];
End;
Var
fv: file of Zap;
file_name:string;
razmer:Integer;
sved:Zap;
ch:Char;
p,i:Byte;
Procedure Add_Rec;
Begin
WriteLn('Ввдите количество записей');
ReadLn(razmer);
For i:= 1 to razmer do
Writeln('Fam');
ReadLn(sved.fio.fam);
Writeln('n_grup');
readLn(sved.n_grup);
Writeln('ocenki');
readLn(sved.ocenki);
Writeln(' Zachet');
readLn(sved. Zachet);
end;
Procedure Sozd_file;
Var
Ch1:Char;
begin
Writeln('создание файла');
Writeln('введите имя файла');
Read(file_name);
Assign(fv, file_name);
Rewrite(fv);
writeln('введите сведенья');
repeat
Add_rec;
Until Ch1=#27;
Close(fv);
End;
Procedure Out_rec;
Begin
Read(fv,sved);
Writeln(sved.fio.fam);
Writeln(sved.n_grup);
Writeln(sved.ocenki);
Writeln(sved. Zachet);
End;
Procedure Out_All_Rec;
Begin
Writeln('чтение файла');
Writeln('введите имя файла');
readln(file_name);
Assign(fv,file_name);
reset(fv);
seek(fv,0);
While not Eof(fv) do
Close(fv);
End;
Begin
Writeln('1:add_rec');
Writeln('2:Sozd_file');
Writeln('3:Out_rec');
Writeln('4:Out_all_rec');
Case P of
1:Add_rec;
2:sozd_file;
3:Out_rec;
4:out_all_rec;
end;
ReadKey;
End.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 16)
мисс_граффити
сообщение 3.01.2008 21:31
Сообщение #2


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


что сразу бросается в глаза:
Procedure Add_Rec;
Begin
WriteLn('Ввдите количество записей');
ReadLn(razmer);
For i:= 1 to razmer do
begin //<-вот...
Writeln('Fam');
ReadLn(sved.fio.fam);
Writeln('n_grup');
readLn(sved.n_grup);
Writeln('ocenki');
readLn(sved.ocenki);
Writeln(' Zachet');
readLn(sved. Zachet);
end; //<--и вот
end;


 Procedure Out_All_Rec;
Begin
Writeln('чтение файла');
Writeln('введите имя файла');
readln(file_name);
Assign(fv,file_name);
reset(fv);
seek(fv,0);
While not Eof(fv) do
//здесь ничего не забыла?
Close(fv);
End;

и что-то при беглом осмотре не нашла, где оно пишется в файл...

Сообщение отредактировано: мисс_граффити - 3.01.2008 21:34


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 3.01.2008 21:32
Сообщение #3


Гость






Цитата
Вот собственно код

И что, собственно? Что-то не работает? Значит, что-то сделала неправильно. Уточняй, что не работает... Навскидку - я вижу, что у тебя в Sozd_File возможен вечный цикл (Ch1 не инициализируется, и не читается ниоткуда, а почему-то сравнивается с #27), да и в файл, собственно, ничего не пишется (Add_Rec вообще придется переписывать полностью)...
 К началу страницы 
+ Ответить 
zoha
сообщение 3.01.2008 21:45
Сообщение #4


Хакер
*

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

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


Цитата(мисс_граффити @ 3.01.2008 23:31) *

что сразу бросается в глаза:
Procedure Add_Rec;
Begin
WriteLn('Ввдите количество записей');
ReadLn(razmer);
For i:= 1 to razmer do
begin //<-вот...
Writeln('Fam');
ReadLn(sved.fio.fam);
Writeln('n_grup');
readLn(sved.n_grup);
Writeln('ocenki');
readLn(sved.ocenki);
Writeln(' Zachet');
readLn(sved. Zachet);
end; //<--и вот
end;


 Procedure Out_All_Rec;
Begin
Writeln('чтение файла');
Writeln('введите имя файла');
readln(file_name);
Assign(fv,file_name);
reset(fv);
seek(fv,0);
While not Eof(fv) do
//здесь ничего не забыла?
Close(fv);
End;

и что-то при беглом осмотре не нашла, где оно пишется в файл...


можно обойтесь без процедуры если нужно только по теме не типизированные файлы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 3.01.2008 22:38
Сообщение #5


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


Цитата
можно обойтесь без процедуры если нужно только по теме не типизированные файлы.

можно.
а зачем?
с ними намного удобнее... имхо


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
zoha
сообщение 5.01.2008 9:01
Сообщение #6


Хакер
*

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

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


Цитата(мисс_граффити @ 4.01.2008 0:38) *

можно.
а зачем?
с ними намного удобнее... имхо



А если попросит обяснить, и скажет мы это не проходили и 2 поставит бедному чуваку!!!! norespect.gif norespect.gif norespect.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 5.01.2008 14:09
Сообщение #7


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


zoha , а ты не заметил, что "бедный чувак"(с) это САМ написал?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bast
сообщение 8.01.2008 19:19
Сообщение #8


Новичок
*

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

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


Помогите доделать d3.gif Завтра обязательно надо сдать, последний день, а потом сессия cray.gif cray.gif cray.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bast
сообщение 8.01.2008 21:45
Сообщение #9


Новичок
*

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

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


mega_chok.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Michael_Rybak
сообщение 8.01.2008 23:15
Сообщение #10


Michael_Rybak
*****

Группа: Модераторы
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

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


Ты получил два ответа и проигнорировал их. Удачи.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bast
сообщение 8.01.2008 23:35
Сообщение #11


Новичок
*

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

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


Где я их прогнорировала, я напи сала так как на паре дали
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Michael_Rybak
сообщение 9.01.2008 0:04
Сообщение #12


Michael_Rybak
*****

Группа: Модераторы
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

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


Цитата
Где я их прогнорировала


А где ты кому-то ответила, кроме меня?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bast
сообщение 10.01.2008 18:50
Сообщение #13


Новичок
*

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

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


{Сведенья о сдаче студентами сессии:номер группы, ФИО судента, 
оценки по по 5 экзаменам и зачетам}

Uses
Crt;
Type
Book = Record
am:String[20];
name:String[20];
otch:String[20];
End;
Zap=Record
Fio:Book;
n_grup:integer;
ocenki:integer;
Zachet:string[7];
End;
Var
fv: file of Zap;
file_name:string;
razmer:Integer;
sved:Zap;
ch:Char;
p,i:Byte;
Procedure Add_Rec;
Begin
WriteLn('Ввдите количество записей');
ReadLn(razmer);
For i:= 1 to razmer do
Begin
Writeln('Fam');
ReadLn(sved.fio.fam);
Writeln('n_grup');
readLn(sved.n_grup);
For i:= 1 to 5 do
Begin
Writeln('ocenki');
readLn(sved.ocenki);
Writeln(' Zachet');
readLn(sved. Zachet);
end;
end;
End;
Procedure Sozd_file;
Var
Ch1:Char;
begin
Writeln('создание файла');
Writeln('введите имя файла');
Read(file_name);
Assign(fv, file_name);
Rewrite(fv);
writeln('введите сведенья');
repeat
Add_rec;
Writeln (fv,sved);
Until Ch1=#27;
Close(fv);
End;
Procedure Out_rec;
Begin
Read(fv,sved);
Writeln(sved.fio.fam);
Writeln(sved.n_grup);
Writeln(sved.ocenki);
Writeln(sved. Zachet);
End;
Procedure Out_All_Rec;
Begin
Writeln('чтение файла');
Writeln('введите имя файла');
readln(file_name);
Assign(fv,file_name);
reset(fv);
seek(fv,0);
While not Eof(fv) do
Out_rec;
Close(fv);
End;
Begin
Repeat
ClrScr;
Writeln('1:add_rec');
Writeln('2:Sozd_file');
Writeln('3:Out_rec');
Writeln('4:Out_all_rec');
read(p)
Case p of
1:Add_rec;
2:sozd_file;
3:Out_rec;
4:out_all_rec;
end;
Until p=0;
ReadKey;
End.


Вот что у меня поучилось, я исправила все ошибки что мне показали, но все равно не пошет blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 10.01.2008 19:00
Сообщение #14


Гость






Цитата
я исправила все ошибки что мне показали
Не все... Перечитай пост №3 внимательно.
 К началу страницы 
+ Ответить 
Bast
сообщение 10.01.2008 19:06
Сообщение #15


Новичок
*

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

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


Цитата(volvo @ 10.01.2008 20:00) *

Не все... Перечитай пост №3 внимательно.

В том-то и проблема, что я не могу понять как это сделать
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 10.01.2008 19:32
Сообщение #16


Гость






Твоя программа не только не работает, она даже не компилируется... Во-первых, поле в записи Book должно называться Fam, а не Am... Во-вторых, в процедуре Add_Rec у тебя внутри цикла по i присутствует еще один цикл, тоже по i, что в принципе приведет к очень неожиданным результатам... В третьих -
Writeln (fv,sved);
в той же процедуре смысла не имеет, нельзя WriteLn использовать с типизированными файлами... Это что касается синтаксиса...

Теперь о логике: какой смысл в том, что ты 5 раз подряд читаешь в одну и ту же переменную:
For i:= 1 to 5 do
Begin
Writeln('ocenki');
readLn(sved.ocenki);
Writeln(' Zachet');
readLn(sved. Zachet);
end;

? Может, тебе надо массив оценок сделать все-таки?

Ну, и наконец, я говорил в третьем посте: ты нигде ничего не читаешь в переменную Ch1 (процедура Sozd_File), почему ты думаешь, что цикл Repeat ... Until Ch1 = #27 когда-нибудь закончится?

Исправляй все ошибки, потом продолжим...
 К началу страницы 
+ Ответить 
noname
сообщение 10.01.2008 20:52
Сообщение #17





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

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


Uses
Crt;
Type
Book = Record
fam:String[20];
name:String[20];
otch:String[20];
End;
Zap=Record
Fio:Book;
n_grup:integer;
ocenki:integer;
Zachet:string[7];
End;
Var
fv: file of Zap;
file_name:string;
razmer:Integer;
sved:Zap;
ch:Char;
p,i:Byte;
Procedure Add_Rec;
Begin
WriteLn('Ввдите количество записей');
ReadLn(razmer);
For i:= 1 to razmer do
Begin
Writeln('Fam');
ReadLn(sved.fio.fam);
Writeln('n_grup');
readLn(sved.n_grup);
For i:= 1 to 5 do
Begin
Writeln('ocenki');
readLn(sved.ocenki);
Writeln(' Zachet');
readLn(sved. Zachet);
end;
end;
End;
Procedure Sozd_file;
Var
Ch1:Char;
begin
Writeln('создание файла');
Writeln('введите имя файла');
Read(file_name);
Assign(fv, file_name);
Rewrite(fv);
writeln('введите сведенья');
repeat
Add_rec;
Write(fv,sved);
Until Ch1=#27;
Close(fv);
End;
Procedure Out_rec;
Begin
Read(fv,sved);
Writeln(sved.fio.fam);
Writeln(sved.n_grup);
Writeln(sved.ocenki);
Writeln(sved. Zachet);
End;
Procedure Out_All_Rec;
Begin
Writeln('чтение файла');
Writeln('введите имя файла');
readln(file_name);
Assign(fv,file_name);
reset(fv);
seek(fv,0);
While not Eof(fv) do
Out_rec;
Close(fv);
End;
Begin
Repeat
ClrScr;
Writeln('1:add_rec');
Writeln('2:Sozd_file');
Writeln('3:Out_rec');
Writeln('4:Out_all_rec');
read(p)
Case p of
1:Add_rec;
2:sozd_file;
3:Out_rec;
4:out_all_rec;
end;
Until p=0;
ReadKey;
End.




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

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

 



- Текстовая версия 21.07.2025 11:33
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"