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

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

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

> Проблема с прогой на линейные списки.
TheKnyazz
сообщение 1.02.2009 19:08
Сообщение #1


Новичок
*

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

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


Здравствуйте!Я очень внимательно прочитал ваш достаточно качественный ЧаВо по файлам и динамическим спискам, но тут проблема, я не знаю куда прилепить процедуру закрытия файла, чтоб в моем ткст файле сохранялись мои записи в таблицу, и при следующем запуске программы, я мог загрузить из файла значения, и продолжить работу со старыми данными. Так же небольшая проблема с пониманием такой строки моего задания "создать процедуру, которая вставляет в список L новый элемет Е1, за каждым вхождением элемента Е"
Я просто не понимаю, что это значит. У нас была только 1 лекция по этой теме, но это нам не обьясняли, а на следующее практическое задание тянуть готовую лабу. Обьясните пожалуйста, что оно такое.

Вот мой исходник.

Program lab9;
Uses Crt;
Type
Data= Record
num:byte;
FIO:string[15];
year: integer;
sex: char;
stat: string[11];
child: byte;
salary: integer;
End;
Ukaz=^Query;
Query=Record
Inf:Data;
Next:Ukaz
End;
Var
NewE,Left,Right,Temp:Ukaz;
Z:Data;
Key:byte;
f:text;

Procedure Org;
var i: integer;
Begin
clrscr;
reset (f);
Writeln('vypolnyaetsya procedura organizacii ocheredi');
write ('zagruzka dannyh iz faila');
for i:= 1 to 7 do
begin
delay (300);
write ('.')
end;
writeln;
writeln ('zagruzka zavershena');
readln;
Writeln('======================================== ');
with z do
Readln(f,num,Fio,year,stat,sex,child,salary);
New(NewE);
NewE^.Inf.num:=Z.num;
NewE^.Inf.Fio:=Z.Fio;
NewE^.Inf.year:=Z.year;
NewE^.Inf.stat:=Z.stat;
NewE^.Inf.sex:=Z.sex;
NewE^.Inf.child:=Z.child;
NewE^.Inf.salary:=Z.salary;
NewE^.Next:=nil;
Right:=NewE;
Left:=NewE;
While not eof(f) Do
Begin
with z do
Readln(f,num,Fio,year,stat,sex,child,salary);
New(NewE);
NewE^.Inf.num:=Z.num;
NewE^.Inf.Fio:=Z.Fio;
NewE^.Inf.year:=Z.year;
NewE^.Inf.stat:=Z.stat;
NewE^.Inf.sex:=Z.sex;
NewE^.Inf.child:=Z.child;
NewE^.Inf.salary:=Z.salary;
NewE^.Next:=Nil;
Right^.Next:=NewE;
Right:=NewE
End
End;
Procedure Dob;
Begin
Writeln('vvedite №');
Readln(Z.num);
Writeln('vvedite familiyu');
Readln(Z.Fio);
If Z.Fio='*' Then Exit;
Writeln('vvedite god rojdeniya');
Readln(Z.year);
Writeln('vvedite pol');
Readln(Z.sex);
writeln ('vvedite status');
readln (z.stat);
Writeln('vvedite kolichestvo detei');
Readln(Z.child);
Writeln('vvedite zarplatu');
Readln(Z.salary);
New(NewE);
NewE^.Inf.num:=Z.num;
NewE^.Inf.Fio:=Z.Fio;
NewE^.Inf.year:=Z.year;
NewE^.Inf.stat:=Z.stat;
NewE^.Inf.sex:=Z.sex;
NewE^.Inf.child:=Z.child;
NewE^.Inf.salary:=Z.salary;
NewE^.Next:=nil;
If Right=Nil Then
Left:=NewE
Else
Right^.Next:=NewE;
Right:=NewE;
End;

Procedure Udal;
Begin
Writeln('isklyuchaetsya golovnoi element ocheredi');
Writeln('press Enter');
Readln;
If Left<>Nil Then
Begin
Temp:=Left;
Left:=Left^.Next;
Dispose(Temp);
If Left=Nil Then
Right:=Nil;
End
End;

Procedure Prosmotr;
Var i:integer;
Begin
if left=nil then
begin
writeln ('spisok pustoi');
readln;
clrscr;
exit
end
else
Writeln('ochered soderjit sleduyuschie elementy');
Temp:=Left;
While Temp<>nil Do
Begin
Writeln(Temp^.Inf.num,' ',Temp^.Inf.Fio,' ',Temp^.Inf.year,' ',Temp^.Inf.sex,' ',
Temp^.Inf.stat,' ',Temp^.Inf.child,' ',Temp^.Inf.salary);
Temp:=Temp^.Next;
End;
Writeln('press Enter');
Readln;
clrscr;
End;

procedure my_var;
Begin
End;

begin
assign (f,'d:\lab9.txt');
{$I-};
reset(f);
{$I+};
if IOResult=0 then
writeln ('file opened successfully')
else
begin
writeln ('no input file');
readln;
exit;
end;
Right:=Nil;
Left:=Nil;
ClrScr;
while true do
begin
Writeln('1-organizaciya spiska');
Writeln('2-dobavlenie elementa');
Writeln('3-udalenie elementa');
Writeln('4-prosmotr spiska');
writeln('5-moe zadanie');
Writeln('6-vyhod');
Writeln('-------------------------------');
readln(key);
Case Key Of
1 : Org;
2 : Dob;
3 : Udal;
4 : Prosmotr;
5 : my_var;
6 : EXIT;
End;
end;
End.




Основные ф-ции работают вроде, а вот чтоб сохранять данные, не получается.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Гость
сообщение 2.02.2009 23:04
Сообщение #2


Гость






Цитата(volvo @ 2.02.2009 22:30) *

сохранит данные в файл, главное потом правильно их прочесть...


Не получается правильно прочесть. Если пишу еще одну процедуру просто для чтения типизированного файла, паскаль завершает работу.
Если меняею процедуру prosmotr все рачно ничего не выводиться при повторном запуске
procedure prosmotr;
var i: integer;
begin
reset(tab);
seek(tab,0);

writeln ('elementi o4eredi');
writeln;
 К началу страницы 
+ Ответить 

Сообщений в этой теме
TheKnyazz   Проблема с прогой на линейные списки.   1.02.2009 19:08
volvo   Перед тем, как выйти из программы (при выборе 6-го...   1.02.2009 19:21
TheKnyazz   Что-то я зашел в тупик. Из ваших слов procedure Es...   1.02.2009 20:20
volvo   Не-а... Я сказал: , это делается Rewrite-ом... И з...   1.02.2009 20:31
TheKnyazz   Я надеюсь, ты сохранил где-то указатель на начало...   1.02.2009 21:47
volvo   Не вот у тебя когда происходит просмотр списка, ты...   1.02.2009 22:00
TheKnyazz   Вас понял, из-за таких "гениев" как я пр...   1.02.2009 22:50
Alma   Я конечно прошу прощения. Но у меня аналогичная пр...   2.02.2009 21:22
volvo   Я советовал записывать в файл, а не выводить на эк...   2.02.2009 21:39
Гость   Разница заметна, спасибо, сама не увидела:) Единст...   2.02.2009 22:17
volvo   Потому что в исходной программе работа была с текс...   2.02.2009 22:30
Гость   сохранит данные в файл, главное потом правильно и...   2.02.2009 23:04
volvo   А если написать эту процедуру правильно? Вот так, ...   2.02.2009 23:19
Гость   Спасибо огромное. Вы очень мне помогли   2.02.2009 23:37


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

 



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