Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 297
от 24.01.2007, 17:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 229, Экспертов: 56
В номере:Вопросов: 1, Ответов: 1


Вопрос № 71550: Немогу дописать процедуру добавляющюю элемент списка заданной структуры в имеющийся список если не трудно помогите uses crt; type pp=^el; el=record pole1,pole2:integer; pnt:pp; end; var pb:pp; k,i:byte; ...

Вопрос № 71.550
Немогу дописать процедуру добавляющюю элемент списка заданной структуры в имеющийся список
если не трудно помогите

uses crt;
type pp=^el;
el=record
pole1,pole2:integer;
pnt:pp;
end;
var pb:pp;
k,i:byte;
{+++++++++++++++++++++++++++++++++}
procedure vyv(uk:pp);
begin
if uk=nil then writeln('список пуст')
else writeln(' поле 1','':4,'поле 2');
while uk<>nil do
begin
writeln(uk^.pole1:8,uk^.pole2:8);
uk:=uk^.pnt;
end;
readkey;
end;
{+++++++++++++++++++++++++++++++++}
procedure analiz(uk:pp);
begin
if uk=nil then writeln('список пуст')
else writeln('вывод первого поля тех элементов, второе поле которых положительно');
while uk<>nil do
begin
if uk^.pole2>0 then writeln(uk^.pole1:6);
uk:=uk^.pnt;
end;
readkey;
end;
{+++++++++++++++++++++++++++++++++}
procedure sozd(var uk:pp);
var tt:pp;
begin
randomize;
new(tt);
uk:=tt;
tt^.pole1:=random(50);
tt^.pole2:=random(50)-25;
for i:=1 to 7 do
begin
new(tt^.pnt);
tt:=tt^.pnt;
tt^.pole1:=random(50);
tt^.pole2:=random(50)-25;
end;
tt^.pnt:=nil;
writeln('список создан');
readkey;
end;
{+++++++++++++++++++++++++++++++++}
procedure add();
begin
end;
{+++++++++++++++++++++++++++++++++}
begin
while true do
begin
clrscr;
writeln('выберите нужную команду:');
writeln('1:создать список');
writeln('2:вывести информацию из списка');
writeln('3:выполнить анализ элементов списка');
writeln('4:добавить элемент списка');
writeln('5:выход из программы');
write('команда номер ');
read(k);
case k of
1:sozd(pb);
2:vyv(pb);
3:analiz(pb);
4:add(pb)
5:halt;
else begin writeln('ошибка, нажмите любую клавишу'); readkey; continue end;
end;
end;
end.
Отправлен: 18.01.2007, 16:57
Вопрос задал: Snik (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Tek
Здравствуйте, Snik!
Если учесть, что вы добавляете элемент в уже созданный вами список, то у вас уже есть нужный код, просто предварительно нужно найти последний элемент списка:
procedure add(var uk:pp);
var tt:pp;
begin
tt = uk;
while (tt^.pnt<>nil) do
tt:=tt^.pnt

new(tt^.pnt);
tt:=tt^.pnt;
tt^.pole1:=random(50);
tt^.pole2:=random(50)-25;
tt^.pnt:=nil;
end;

new(tt^.pnt);
tt:=tt^.pnt;
tt^.pole1:=random(50);
tt^.pole2:=random(50)-25;

---------
WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано (C)Почти Уинстон Черчилль :)
Ответ отправил: Tek (статус: 7-ой класс)
Ответ отправлен: 18.01.2007, 17:10


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.41 beta от 19.01.2007
Яндекс Rambler's Top100

В избранное