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

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

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

> Динамические структуры, Проверьте, работает некоректно...
Akella
сообщение 31.03.2009 16:35
Сообщение #1


Пионер
**

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

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


Вот условие:
Создать в динамической памяти односвязный линейный список(цепочка) из n элементов. Заполнение информационных полей элементов списка(в моей проге это data) можно провести генератором случ. чисел. Реализировать процедуры: добавления элемента в любую точку списка, удаление, вывода на экран полученной в куче числ. посл-ти.
И еще одна процедура по пребразованию последовательности из x1,x2,x3,...xn надо получить (x1-xn),(x2-xn),...(xn-1 -xn) воть!

Теперь что у меня не работает:
1. выводит на экран на 1 элемент меньше (не знаю почечу)
2. процедура вставки некоректно работает при замене 1-го элемента
3. процедура удаления также не работает при удалении 1-го элемента
4. процедура преобразования отнимает не последний элемент, а какой попадется=(( вот... кто-чем сможет - помогите!!! rolleyes.gif

 program lab_12_1;
uses crt;

type
  point=^element;
  element=record
    Data:integer;
    Next:point;
  end;

var
  P,H,PBegin:point;
  i,n:integer;
  MemBegin:longint;
  Simvol:char;

procedure Vivod(P:point);
 begin
   writeln('Tekushaya posledivatelnost:');
   repeat
     write(P^.data,' ');
     P:=P^.Next;
   until
     P^.Next=Nil;
end;

procedure Vstavka(var Pred:point; Nomer,Chislo:integer);
 var
   i:integer;
   Vst:point;
begin
  if Nomer=1 then begin
    New(Vst);
    Vst^.Data:=Chislo;
    Vst^.Next:=Pred;
    Pred:=Vst;
  end
  else for i:=1 to Nomer-2 do begin
     Pred:=Pred^.Next;
   end;
   New(Vst);
   Vst^.Data:=Chislo;
   Vst^.Next:=Pred^.Next;
   Pred^.Next:=Vst;
end;

procedure Udalenie(var Pred:point; Nomer:integer);
 var
   i,Chislo:integer;
   Ud:point;
begin
  if Nomer=1 then begin
    Ud:=Pred;
    Pred:=Pred^.Next;
    Chislo:=Ud^.data;
    Dispose(Ud);
  end
  else for i:=1 to Nomer-2 do begin
     Pred:=Pred^.Next;
   end;
 Ud:=Pred^.Next;
 Pred^.Next:=Pred^.Next^.Next;
 Chislo:=Ud^.Data;
 Dispose(Ud);
end;

procedure NovPosl(var P:point);
 var
   PBegin:point;
   Chislo:integer;
begin
  PBegin:=P;
  while  P^.Next <> Nil do begin
  P:=P^.Next
  end;
  Chislo:=P^.Data;
  P:=PBegin;
  while P^.Next <> Nil do begin
    P^.Data:=P^.Data-Chislo;
    P:=P^.Next;
  end;
end;



begin  {----------------------------}
  clrscr;
  randomize;

  New(P);
  PBegin:=P;
  MemBegin:=MemAvail;

  write('Vvedite kol-vo elementov: '); readln(N);

  for i:=1 to n do begin
    P^.Data:=random(100);
    P^.Next:=Nil;
   if i<n then begin
    H:=P;
    New(P);
    H^.Next:=P;
   end;
  end;
  p:=PBegin;
  Vivod(PBegin);
  N:=0;
  writeln;
  writeln;

  repeat begin
   writeln('Najmit:');
   writeln('D - udalit element');
   writeln('A - dobavit element');
   writeln('F - preobrazovanie');
   writeln('E - vihod');
   Simvol:=readkey;
   case Simvol of
    'd': begin
	   write('Vvedite poziciu elementa: ');
	   read(N);
	   P:=PBegin;
	   Udalenie(P,N)
	 end;
    'a': begin
	   write('Vvedite poziciu novogo elementa: ');
	   read(n);
	   P:=PBegin;
	   Vstavka(P,N,0)
	 end;
    'f': begin
	   P:=PBegin;
	   NovPosl(P);
	 end;
    end;
    clrscr;
    P:=PBegin;
    Vivod(P);
    end;
    until Simvol='e';
end.



если что спрашивайте, постараюсь ответить... однако не так быстро..

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

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


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

 

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