C ++ Пользовательские целые числа последовательности без использования массивов

Я пытаюсь понять это самостоятельно, и я не могу.
Профессор просит об этом.
Пользователь определит длину последовательности.
Затем пользователь будет вводить числа из любого диапазона, как отрицательные, так и положительные.
Программа:
Найдите два самых больших числа и отобразите их в порядке убывания.
Найдите два самых маленьких числа и отобразите их в порядке возрастания.

Не могу использовать сортировку или массивы.
У меня есть план, но моя голова просто хочет использовать массивы ….. Я не вижу этого простого без массива. Смущенный. Я новичок Я просто хочу помочь. Совет? Репетитор?

-5

Решение

Начните с решения более простой проблемы и вырастите в решение реальной проблемы, которую вы решаете:

  • Напишите программу, которая находит и печатает наибольшее число, введенное пользователем. Это легко сделать с помощью одной переменной, отслеживающей «верхний водяной знак»
  • Измените вашу программу, чтобы отслеживать наименьшее число, а также. Вы можете сделать это, добавив другую переменную и отслеживая «низкий уровень воды».

Задача в обеих вышеуказанных задачах — это начальное значение верхнего / нижнего водяных знаков. Это распространенный источник ошибок; Есть несколько Q&Как и на ТА, объясняющем исправление.

Теперь самое интересное:

  • Измените вашу программу, чтобы отслеживать второе по величине число, «понижая» число, которое раньше считалось наибольшим, до второго по величине каждый раз, когда вы находите число, которое больше, чем наибольшее, и заменяя второе по величине, когда Вы найдете значение выше него, которое не превышает наибольшее значение.

Это потребует от вас написать пару if заявления.

  • Наконец, измените вашу программу, чтобы отслеживать второе по наименьшее число, применяя «зеркальное отображение» алгоритма выше.
2

Другие решения

Алгоритм («Найти два самых больших числа в последовательности, не сохраняя последовательность»)

(Я решил восстановить этот ответ. Для ОП может быть полезно уйти от настроения массива)

Input: A sequence of values S.
Output: Values Max and SecondMax.

The consumed, current value of S is E
1 : Set Max to E
2 : Set SecondMax to E (Second value in S)
3 : If Max < SecondMax -> Swap Max and SecondMax.
4 : while ( e:= E exists)
4.1 : If ( e > Max ) SecondMax := Max, Max := e
4.1.1 : Else If ( e > SecondMax ) SecondMax := e

Это тривиально распространено на минимумы.

0

По вопросам рекламы [email protected]