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

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

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

> Список построенный из элементов файла, Описать функцию, значением которой есть этот список
AlexSun
сообщение 26.11.2011 15:57
Сообщение #1


Новичок
*

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

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


Задание:
Цитата
type TE = <любой_тип>;
ff = file of TE;
список =^ звено;
звено = record
элемент: TE;
следующий: список;
end;
Описать функцию, значением которой есть список, построенный из элементов файла.


Моя программа:
uses	crt;
type	TE = char;
	ff = file of TE;
	list =^ link;
	link = record
		element: TE;
		next: list;
	end;
var	fname: string[79];
	f: ff;
	ch: TE;
	l: list;

function flist(var f: ff): list;
var	l, p, q: list;
	x: TE;
begin
	new(l);
	read(f,x);
	l^.element := x;
	p := l;
	while not eof(f) do begin
		read(f,x);
		new(q);
		q^.element := x;
		p^.next := q;
		p := q
	end;
	p^.next := nil;
	flist := l
end;

begin
	clrscr;
	write('Введите имя файла: ');
	readln(fname);
	assign(f,fname);
	{I-}
	reset(f);
	{I+}
	if IOResult <> 0 then begin
		writeln('Введите текст:');
		rewrite(f);
		repeat
			read(ch);
			write(f,ch)
		until ch = #10;
		close(f);
		reset(f)
	end;
	l := flist(f);
	writeln('Элементы списка:');
	while l <> nil do begin
		write(l^.element);
		l := l^.next
	end;
	readkey
end.


Как переделать функцию flist, чтоб не вылетала с ошибкой при пустом файле?

И еще вопрос, как лучше сделать ввод элементов списка.
При until ch = #10 в конец записывается символ \n, при until ch = #13 - \r, а они мне не нужны.
Или сделать тип элемента списка integer что ли, да вводить в цикле for, перед этим получив их количество...

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

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


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

 

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