С Новым годом! Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 0
Регистрация: 02.10.2009
Сообщений: 159
1

Вывести на экран элементы списка, которые больше своих соседей

12.04.2010, 23:07. Показов 2286. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
дан список из n целых чисел. вывести на экран элементы списка, которые больше своих соседей.
Помогите...какой список лучше использовать?...и после сравнениея я так понимаю если a<b>c, то удаляем a и c...?как вобще все это организовать
может у кого вообще есть подобная готовая программка?)))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.04.2010, 23:07
Ответы с готовыми решениями:

Вывести на экран элементы списка, которые больше своих соседей
Дан список из n целых чисел a1,a2,..,an. Вывести на экран те элементы списка, которые больше своих...

Вывести те значения массива, которые больше своих соседей, и подсчитать их количество
Массив А(30) заполнить целыми случайными числами в диапазоне от 5 до 115. Вывести те значения...

Типизированные файлы. Числа. Вывести количество чисел, которые больше своих "соседей"
Типизированные файлы. Программно создать файл, состоящий из 50 целых чисел в диапазоне . Описать...

Вывести на экран те элементы списка, которые больше своих соседей
Дан список из n целых чисел a1,a2,..,an. Вывести на экран те элементы списка, которые больше своих...

6
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
13.04.2010, 04:16 2
МаргаритаC, Лучше использовать двусвязный список (просто будет проще проверять, хотя если использовать 3 указателя (на текущую запись, на соседа слева и справа), то можно и односвязный, но думаю Вам так сложнее будет) и просто побежать по всем записям, проверяя соседей, если подходит по условию, то просто выводим на экран (ни в коем случае не удаляем!) и всё.
Программа для работы со списками уже есть и написана. Вам стоит дописать одну лишь процедуру и убрать ненужные Вам.
https://www.cyberforum.ru/pascal/thread77419.html
1
1 / 1 / 0
Регистрация: 02.10.2009
Сообщений: 159
14.04.2010, 21:22  [ТС] 3
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure Max(head:Plist);
var 
p,h,f:Plist;
begin
p:=head^.next;
h:=p^.next;
f:=h^.next;
while p<>nil do
begin
if (h^.info > p^.info) and (h^.info > f^.info) then
begin
writeln(h^.info);
p:=p^.next;
h:=h^.next;
f:=f^.next;
end
else
begin
p:=p^.next;
h:=h^.next;
f:=f^.next;
end;
end;
end;
ну вобщем программа выдает ошибку....впрочем я и не ожидала другого) помогите плиз...я создала 2ухсвязный список со сторожем...как перебрать и сравнить его элементы...?
0
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
15.04.2010, 00:05 4
МаргаритаC, Как-то Вы перемудрили) Можно как-то вот так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure Max(head:Plist);
var 
  p,h,f:Plist;
begin
  p:=head
  while p<>nil do
  begin
    if p^.prev<>nil then
      if p^.next<>nil then
        if (p^.info > p^.prev^.info) and (p^.info > p^.next^.info) then
          writeln(p^.info);  
    p:=p^.next;
  end;
end;
Не компилировал
1
1 / 1 / 0
Регистрация: 02.10.2009
Сообщений: 159
15.04.2010, 19:35  [ТС] 5
спасибо!все работает)
вот только, что должна выдавать программа если такой список 60 20 30 или 20 60
у меня ничего не выдает) ну если у числа нет второго соседа означает ли это что оно не должно выводится...?
0
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
16.04.2010, 00:33 6
МаргаритаC, Вы посмотрите хорошенько на провеки!
Pascal
1
2
    if p^.prev<>nil then {Сосед слева есть?}
      if p^.next<>nil then {Если есть сосед слева, проверяем, есть ли сосед справа!}
Если нет соседа слева, то ничего дальше не делать, а если есть, то проверяем есть ли сосед справа! Так что правильно, программа ничего не выводит.
0
1 / 1 / 0
Регистрация: 02.10.2009
Сообщений: 159
16.04.2010, 15:09  [ТС] 7
вобщем мне сказали убрать сторож, так как не хорошо ссылаться на информационную часть сторожа)
а как написать процедуры ввода и вывода списка без сторожа я не знаю...)
и еще сказали, что даже если есть только один сосед то его и учитывать....ну вобщем заново написать условие вывода максимального элемента среди соседей) я понимаю как сделать...но с этими условиями запуталась
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
if p^.pred=nil then
 if (p^.info > p^.next^.info) then
  writeln(p^.info);
  p:=p^.next
else 
if p^.next=nil then
 if (p^.info > p^.pred^.info) then
  writeln(p^.info);
  p:=p^.next
else 
if (p^.info > p^.pred^.info) and (p^.info > p^.next^.info) then
writeln(p^.info);
  p:=p^.next
0
16.04.2010, 15:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2010, 15:09
Помогаю со студенческими работами здесь

Переписать в массив Y те элементы исходного массива, которые строго больше своих соседей
Задан целочисленный массив Х из 20 элементов! Переписать в массив Y те элементы исходного массива,...

Определить количество и номера элементов, которые больше своих соседей
Задана последовательность точек плоскости P1(x, y); P2(x, y); …..; Pn(x, y). Определить количество...

Сформировать вектор М из элементов массива А, которые больше своих соседей; сдвинуть его на одну позицию влево
Помогите с задачей (Pascal). Дан массив А(n), nЈ 15, целого типа. Сформировать вектор М из...

Дан список чисел. Определите, сколько в этом списке элементов, которые больше двух своих соседей и выведите ко
Дан список чисел. Определите, сколько в этом списке элементов, которые больше двух своих соседей и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru