Помогите решить задачу:формирование списка из n элементов Добавление элемента А после...

0 голосов
30 просмотров

Помогите решить задачу:формирование списка из n элементов Добавление элемента А после второго максимального Удаление повторяющегося второй раз максимального элемента если такого нет ничего не удалять Выполнить сортировку списка по убыванию.После каждой операции, выводить результат на экран


Информатика (15 баллов) | 30 просмотров
0

А если можно вторым максимальным считать число и меньше абсолютного максимума, то два максимума есть всегда и фраза " если такого нет ничего не удалять" непонятно зачем.

0

Ну так в задании написано

0

Уважаемый, задание - это Вам дали, а не нам. Ваше дело - опубликовать вопрос так, чтобы было однозначно ясно, что именно требуется сделать.

0

А если Вы просто перемещаете вопрос сюда, а ответ туда, то Вы - лишнее звено в этой цепочке.

0

Я уточнил, она должна удалять повторяющийся максимальный.А если одинаковых максимальных нету, то ничего не удалять.

0

Если список (6,89,100,17,5,) то вставляем после 89 , и получается (6,89,71,100,17,5) в таком случаи ничего не удаляем ( поскольку нету повторяющихся максимальных.

0

А если список (6,89,100,17,5,) то вставляем после 89 , и получается (6,89,100,100,17,5) в таком случаи удаляем вторую сотню.

0

Или список (6,98,17,5,99) вставляем после 98, вставляем 99 и получаем (6,98,99,17,5,99) и в конце получим (6,98,99,17,5)

0

Т.е. все же вставка после второго от начала элемента, равного максимальному или наиболее близкого к нему.

0

Вставка после элемента наиболее близкого к максимальному , например если в списке максимальный элемент 63 а наиболее близкий к нему 45 , то вставка после 45 . Независимо от того в какой части списка он стоит

Дан 1 ответ
0 голосов
Правильный ответ

// PascalABC.NET 3.4.2, сборка 1806 от 30.09.2018

// Внимание! Если программа не работает, обновите версию!

begin

 var L := ReadSeqInteger('Вводите:', ReadInteger('N=')).ToList;

 L.Println; // исходная

 var k := L.OrderDescending.Skip(1).First; // после чего вставить

 var A := ReadInteger('Что вставляем?');

 L.Insert(L.IndexOf(k) + 1, A);

 L.Println; // после вставки

 k := L.Max;

 var ai := L.ToArray.IndexesOf(t -> t = k).ToArray;

 if ai.Count > 1 then

 begin

   L.RemoveAt(ai[1]);

   L.Println; // после удаления, если оно было

 end;

 L := L.SortedDescending.ToList;

 L.Println // после сортировки

end.

(654k баллов)
0

Почему он в конце не сортирует по убыванию?

0

Забыл))) Сейчас допишу)))

0

Уже сортирует

0

Спасибо

0

Пожалуйста. Достаточно было просто сердечко щелкнуть. Тут так принято.

0

Но это Ваше право, конечно.