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

0 голосов

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


спросил от (15 баллов) в категории Информатика
оставил комментарий от

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

оставил комментарий от

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

оставил комментарий от

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

оставил комментарий от

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

оставил комментарий от

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

оставил комментарий от

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

оставил комментарий от

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

оставил комментарий от

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

оставил комментарий от

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

оставил комментарий от

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

1 Ответ
0 голосов
ответил от БОГ (678k баллов)
 
Лучший ответ

// 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.

оставил комментарий от БОГ (678k баллов)

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

оставил комментарий от БОГ (678k баллов)

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

оставил комментарий от БОГ (678k баллов)

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

оставил комментарий от БОГ (678k баллов)

Спасибо

оставил комментарий от БОГ (678k баллов)

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

оставил комментарий от БОГ (678k баллов)

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

...