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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2012, 18:58   #1
Галенька
Пользователь
 
Регистрация: 09.01.2012
Сообщений: 10
Восклицание Двунаправленные списки! Очень надо!!

Помогите, нужно дописать что-то в конце, а я не знаю что...
программа создает двунаправленный список, после чего нужно найти минимальный элемент из списка и вывести его, и еще нужно вывести номер этого элемента...
Моя программа, если в списке больше 1 (т.е. 2 одинаковых числа и больше) минимального элемента, выводит оба... а нужно только первый из всех минимальных

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Unit1 in 'Unit1.pas';
  Function Kod(s:string):string;
Var i,d:integer;
Begin
   result:=s;
   d:=length(result);
   For i:=1 to d do begin
   if (result[i]>='р') and (result[i]<='я') then result[i]:=chr(ord(s[i])-16)
   else if (result[i]>='А') and (result[i]<='п') then result[i]:=chr(ord(s[i])-64)

   end;
end;
procedure  Minimum (u_b:sv2;var min:integer);
var u_z :sv2;
begin
  u_z:=u_b;
  min:=u_z^.info;
  while u_z<>nil do
  begin
 if u_z^.info<min then begin
  min:=u_z^.info;
 end
  else
  u_z:=u_z^.sled;
  end;
  writeln ('Min: ', min);
end;
procedure Poisk(u_b:sv2;var  min: integer);
var u_z: sv2; k: integer;
begin
  u_z := u_b; k := 1;
  while u_z<>nil do
     begin
    if u_z^.info = min then
  begin
      writeln(kod('Минимальное число '), min, kod(' стоит в списке под номером: '), k);
    end ;
ГДЕ_ТО ТУТ НАДО ЧТО_ТО НАПИСАТЬ.....
 inc(k); u_z := u_z^.sled;
  end;
end;

Var U_b,u_e:sv2;  min,k:integer;
begin
  Form(U_b,U_e);
  writeln;
  Viv_spi(U_b, U_e);
  writeln;
  Minimum (u_b, min);
  writeln;
  Poisk(u_b,min);
  readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
а вот и сам модуль

Код:
unit Unit1;

interface
Type Int=integer;
sv2=^zv2;
zv2=record info:int;
          sled:sv2;
          pred:sv2;
end;
Procedure Add_right(var U_b,U_e:sv2; x:int);
Procedure Form(out U_b, U_e:sv2);
Procedure Viv_spi(const U_b, U_e:sv2);
implementation


Procedure Add_right(var U_b,U_e:sv2; x:int);
Var U_z:sv2;
begin
  if U_e=Nil then
    begin
      New(U_z);
      U_Z^.info:=x;
      U_z^.sled:=Nil;
      U_Z.pred:=Nil;
      U_B:=U_Z;
      U_E:=U_Z;
    end
  else
    begin
      New(U_Z);
      U_Z^.info:=x;
      U_Z^.sled:=Nil;
      U_Z^.pred:=U_e;
      U_e^.sled:=U_z;
      U_E:=U_z;
    end;
end;

Procedure Form(out U_b, U_e:sv2);   //формирование списка
Var x:int;
BEGIN
  U_b:=Nil;
  U_e:=Nil;
  Write('x: ');
  Readln(x);
  While x<>0 do
    begin
      Add_right(U_b,U_e,x);
      Write('x: ');
      REadln(x)
    end;
END;

Procedure Viv_spi(const U_b, U_e:sv2); Var U_z: sv2;
begin
  U_z:=U_b;
  While U_z<>Nil do
    begin
      WRiteln(U_z^.info);
      U_z:=U_z^.sled;
    end;
end;


end.
Галенька вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двунаправленные списки в си шарп первокурсница1 Помощь студентам 0 02.05.2011 21:29
Двунаправленные списки в делфи 7 dok92 Общие вопросы Delphi 1 07.02.2011 20:40
Двунаправленные списки-паскаль Алена_=))) Помощь студентам 2 04.06.2010 18:33
двунаправленные списки в С++ zven_ Общие вопросы C/C++ 22 29.10.2008 18:07
Двунаправленные списки в с++ Марсель059 Общие вопросы C/C++ 0 29.10.2008 15:32