Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2009, 23:02   #1
focus888
 
Регистрация: 29.04.2009
Сообщений: 5
Печаль Указатели!!!!!!!!!!!!!!!

Ребята помогите доработать программу!У мнея не получается вставлять элемент в список, скорее всего ошибка в блоке "Встака элемента"
Вот код:

uses CRT;
type element=^el;
el=record
z:real;
next:element;
end;
var head,v1,v2,v:element;
c:char;
b:boolean;
min,w,j:real;
BEGIN
clrscr;
{Ввод списка}
head:=nil;
v2:=nil;
repeat
new(v1);
write('Введите число: ');
readln(v1^.z);
if head=nil then head:=v1
else v2^.next:=v1;
v1^.next:=nil;
v2:=v1;
write('Продолжить-Enter, exit-N: ');
read(c);
until (c='N') or (c='n');

{ЏПоиск миню элемента}
repeat
v1:=head;
min:=frac(v1^.z);
b:=false;
while v1<>nil do
begin
if frac(v1^.z)<min then min:=frac(v1^.z);
v1:=v1^.next;
end;
until not b;

writeln('Min= ',min:2:3);

v1:=head;
new(v);
v^.z:=min;

{Встака элемента в список}
new(v);
v^.z:=min;
v1:=head;
while v1<>nil do
begin
if frac(v1^.next^.z)=min then
begin
v^.next:=v1^.next;
v1^.next:=v;
end;
v1:=v1^.next;
end;



{‚Вывод на экран**}
writeln('‘Список имеет вид: ');
v1:=head;
while v1<>nil do
begin
write(v1^.z:3:3,' ');
v1:=v1^.next;
end;

{Удаление динам.}
v1:=head;
while v1<>nil do
begin
v2:=v1^.next;
dispose(v1);
v1:=v2;
end;
readln;
readln;
END.
focus888 вне форума Ответить с цитированием
Старый 01.05.2009, 08:58   #2
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Код:
if head=nil then head:=v1
else v2^.next:=v1;
v1^.next:=nil;
v2:=v1;
тут вы сначала присваиваете адрес на сделующий элемент, а потом на текущий, причем многим адресам вы присваиваете нулевой адрес NIL в процессе ввода чисел, поэтому список получается не связанным, а значения теряются

Последний раз редактировалось capta1n; 01.05.2009 в 09:14.
capta1n вне форума Ответить с цитированием
Старый 01.05.2009, 09:13   #3
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

надо вот так:

Код:
repeat
new(v1);
write('Num: ');
readln(v1^.z);
v1^.next:=nil;
if head=nil then
            begin
              head:=v1;
              v2:=head
            end
            else
            begin
              v2^.next:=v1;
              v2:=v2^.next
            end;
write('exit-N: ');
read(c);
until (c='N') or (c='n');
capta1n вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39
Указатели Mango Помощь студентам 2 09.12.2008 12:15
Указатели JOFRIF Общие вопросы C/C++ 2 31.08.2008 18:34
Указатели Принц Общие вопросы C/C++ 2 08.06.2008 16:15
Указатели в Си Иллидан Общие вопросы C/C++ 7 20.02.2008 11:14