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

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

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

 
 Ответить  Открыть новую тему 
> Списки, Не могу понять, что неверно...
сообщение
Сообщение #1





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

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


вот условие: Написать программу, которая вставляет в список L овый элемент Е1 за каждым вхождение элемента Е

Код

Program dinam;
Uses crt;
Type
pel=^element;
element = record
num: integer;
next: pel;
end;
Var
first, g,f,r: pel;
a,e,e1:integer;
ok: boolean;
Begin
Writeln ('Введите элементы списка, окончание ввода Ctrl+Z');
Readln (a);
new (first);
first^.num:=a;
first^.next:= nil;
 While not eof do
  begin
  Readln (a);
  new (g);
  g^.num:=a;
  g^.next:= first;
  first:=g;
  end;
  Writeln ('Получившийся список');
  f:=first;
  While f<> nil do begin
  Writeln (f^.num, ' ');
 f:=f^.next;
 end;
 Writeln ('Введите элемент для поиска');
 Readln (e);
 Writeln ('Введите  дополнительный элемент');
 Readln (e1);
 Writeln;
 g:=first;
 ok:=true;
  While ((g<> nil) and ok) do  begin
   if g^.num=e then ok:=false
   else g:=g^.next;
   end;
   While g<> nil do
   if (not ok) then begin
   New(r);
   r^.num:=e1;
   r^.next:=g^.next;
   g^.next:=r;
   end;
   Writeln ('Результат: ');
   f:=first;
   While f<> nil do begin
   Write (f^.num, ' ');
   f:=f^.next;
   end;
   End.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата(Katti @ 28.03.05 19:18)
вот условие: Написать программу, которая вставляет в список L овый элемент Е1 за каждым вхождение элемента Е

Ну и что? Что Вы имеете в виду под словом "неверно"? То, что программа некорректно вводит значения? То, что список распечатывается задом наперед? Что именно? Здесь что, телепаты, по Вашему?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

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


Совет.
Учитесь структурировать текст программы (форматирование текста) и саму программу (использование функций и процедур как кирпичиков для создания программы).

Читать программу в таком виде не хочется.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





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

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


вот новая програмка, условие тоже.
Проблема возникает, после того, как вводишь элемент Е1, ничего не происходит, т.е. программа дальше не работает...
Код

Program dinam;
 Type
    pel=^element;
    element = record
    num: integer;
    next: pel;
    end;
Var
  first, g,f,r: pel;
  a,e,e1,i,n:integer;
Begin
 readln(n);
  Writeln ('Введите элементы списка');
   Read (a);
    new (first);
   first^.num:=a;
  first^.next:= nil;
 for i:=1 to n-1 do
    begin
      Read (a);
       new (g);
      g^.num:=a;
     g^.next:= first;
    first:=g;
   end;
  Writeln ('Получившийся список');
   f:=first;
     While f<> nil do begin
       Write(f^.num, ' ');
  f:=f^.next;
    end;
  Writeln ('Введите элемент для поиска');
    Readln (e);
     Writeln ('Введите  дополнительный элемент');
    Readln (e1);
  Writeln;
 f:=first;
    g:=f^.next;
  While (f<> nil) do  begin
      if f^.num=e then
    begin
     New(r);
       r^.num:=e1;
         r^.next:=g;
           f^.next:=r;
         dispose(r);
         end
       else f:=f^.next;
   end;
     Writeln ('Результат: ');
      f:=first;
       While f<> nil do begin
         Write (f^.num, ' ');
         f:=f^.next;
       end;
   End.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата(Katti @ 29.03.05 15:04)
Проблема возникает, после того, как вводишь элемент Е1, ничего не происходит, т.е. программа дальше не работает...

Ничего подобного... Программа даже распечатывает введенный список (только почему-то задом наперед)... blink.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





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

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


Ничего не получается, я запускаю программу, она вводит элемент Е1 и все, и дальше просто виснет... unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

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


значит алгоритм неверный.
Скажите, зачем велосипед изобретать, если можно обойтись материалами FAQ"a ?
Программа действительно виснет после ввода e и e1 ...видимо бесконечный цикл...


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Вот верный алгоритм:
Код
uses item, list;
var
 L: tlist;
 p: ptitem;
 x, e1: integer;

begin
 L.init;
 repeat
   readln(x);
   if x <> -1 then
     L.append(x)
 until( x = -1 );
 L.print;

 write('e = '); readln(x);
 write('e1 = '); readln(e1);

 p := L.first;
 while assigned(p) do
   begin
     if p^.info = x then
       L.insert_after(p, e1);
     p := p^.next
   end;
 L.print;

 L.done
end.



P.S. Скачать модули необходимые для работы с программой (и заодно почитать про динамические структуры данных) можно здесь: FAQ: Динамические структуры данных (необходимо скачать модуль List.rar и распаковать в папку с этой программой)
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 15.05.2024 4:05
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name