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

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

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

 
 Ответить  Открыть новую тему 
> ЗАДАЧА О СПИСКЕ, Объясните мне!!!
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Новичок
*

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

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


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


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

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

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


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


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





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

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


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

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





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

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


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


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

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

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


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

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


- с нулем.


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


Гость






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

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

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

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

 





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