Предмет: Информатика,
автор: danikgitler
Помогите решить задачу:формирование списка из n элементов Добавление элемента А после второго максимального Удаление повторяющегося второй раз максимального элемента если такого нет ничего не удалять Выполнить сортировку списка по убыванию.После каждой операции, выводить результат на экран
Аноним:
А если можно вторым максимальным считать число и меньше абсолютного максимума, то два максимума есть всегда и фраза " если такого нет ничего не удалять" непонятно зачем.
Ну так в задании написано
Уважаемый, задание - это Вам дали, а не нам. Ваше дело - опубликовать вопрос так, чтобы было однозначно ясно, что именно требуется сделать.
А если Вы просто перемещаете вопрос сюда, а ответ туда, то Вы - лишнее звено в этой цепочке.
Я уточнил, она должна удалять повторяющийся максимальный.А если одинаковых максимальных нету, то ничего не удалять.
Если список (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 . Независимо от того в какой части списка он стоит
Ответы
Автор ответа:
2
// 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.
Почему он в конце не сортирует по убыванию?
Забыл))) Сейчас допишу)))
Уже сортирует
Спасибо
Пожалуйста. Достаточно было просто сердечко щелкнуть. Тут так принято.
Но это Ваше право, конечно.
Похожие вопросы
Предмет: Музыка,
автор: nanamashchenko20009
Предмет: Химия,
автор: komila61008
Предмет: Математика,
автор: 4n42njsgm6
Предмет: Алгебра,
автор: aseka555
Предмет: История,
автор: Katenik167