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

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

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

> Списки, Не могу понять, что неверно...
Katti
сообщение 28.03.2005 20:18
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 7)
volvo
сообщение 28.03.2005 20:26
Сообщение #2


Гость






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

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


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

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

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


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

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


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Katti
сообщение 29.03.2005 16:04
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.03.2005 16:26
Сообщение #5


Гость






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

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





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

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


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


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

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

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


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


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 31.03.2005 20:14
Сообщение #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

 



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