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

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

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

> ЗАДАЧА О СПИСКЕ, Объясните мне!!!
ZUY
сообщение 19.11.2007 22:18
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: NGUYEN TUAN DUY

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


я так написал эту программуsad.gifсписок)
uses crt;
type
point=^x;
x=record
data:integer;
next:point
end;
Var f1,f2:text;
l,l1:point;
procedure input_list (var l:point);
var
p,q:point;
a:integer;
begin
writeln(maxavail,' ',memavail);
reset(f1);
read(f1,a);
new (p);
p^.next:=nil;
p^.data:=a;
l:=p;
writeln(maxavail,' ',memavail,' ',a);
while not eof (f1) do
begin
read(f1,a);
new(q);
q^.next:=nil;
q^.data:=a;
p^.next:=q;
p:=q;
writeln(maxavail,' ',memavail,' ',a);
end;
end;

procedure output_list (var l:point);
var
p:point;
a:integer;
begin
p:=l; rewrite(f2);
while p <> nil do
begin
a:=p^.data;
writeln('element of file',a);
p:=p^.next;
end;
close (f2);
end;

PROCEDURE DESTROY(L:POINT);
VAR P,Q:POINT;A:integer;
BEGIN
P:=L;
WHILE P<>NIL DO
begin
Q:=P;
P:=P^.NEXT;
A:=Q^.DATA;
DISPOSE(Q);
WRITELN(A,' ',MAXAVAIL,' ',MEMAVAIL, ' dispose');
END;
end;
Function copy_list(l:point):point;
var item:point;
begin
new (item);
copy_list:=item;
while l<>nil do
begin
writeln(maxavail, ' ' ,memavail,' copy data',l^.data);
item^.data:=l^.data;
l:=l^.next;
if l<>nil then
begin
new (item^.next);
item:=item^.next;
end
else
item^.next:=nil;
end;
end;

begin
clrscr;
assign ( f2,'out.dat');
assign (f1,'in.dat');
input_list(l);
output_list(l);
l1:=copy_list(l);
output_list(l);
output_list(l1);
DESTROY(L);
destroy(l1);
writeln(maxavail,' ' ,memavail);
end.

нет ошибок!
но я хочу узнать:
1) когда я состоил список (5 элеметов):1 2 3 4 5,почему ещё есть 0 ?
2) когда мой список состоил из 6 элементов или больше, почему программ работает не точно ?
""copy и paste и run эту задачу! и оъбисните мне пожалуйста!!""

Сообщение отредактировано: Lapp - 21.11.2007 6:56
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 6)
Boss
сообщение 19.11.2007 23:24
Сообщение #2


Новичок
*

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

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


Посети сначала:Стиль программирования
Не читал, но может проблема в загружаемых файлах?? Может ты записываешь элементы с 0 до 5?!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 20.11.2007 1:51
Сообщение #3


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

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

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


Совсем сначала - правила раздела.
Имхо, лучше использовать типизированные файлы в данном случае. Или хотя бы прикрепить те, на которых проверяешь.


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





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: NGUYEN TUAN DUY

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


спасибо моим друзьям!

Сообщение отредактировано: ZUY - 21.11.2007 2:10
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
ZUY
сообщение 21.11.2007 7:58
Сообщение #5





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: NGUYEN TUAN DUY

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


Сейчас я только не понимаю :
Почему когда я состоил file.dat (5 элементов) 1 2 3 4 5 ,то программ читал ещё 0. Но когда состоил file.txt ,он нормально работает. Объясните пожалуйста!!! чем быстрее, тем лучше!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 21.11.2007 8:43
Сообщение #6


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Дело не в расширении. Обрати внимание на пустую строку после твоих данных.
Вот такой файл:
Код
1 2 3 4 5

- получается без нуля, а вот такой:
Код
1 2 3 4 5


- с нулем.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 21.11.2007 12:35
Сообщение #7


Гость






А чтобы НЕ обращать внимание на пустые строки - пользуйся не EOF(), а SeekEOF:

procedure input_list (var l:point);
...
while not Seekeof (f1) do { <--- Вот тут }
...

 К началу страницы 
+ Ответить 

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

 



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