Наибольшее число в последовательности и его размещение |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Наибольшее число в последовательности и его размещение |
Kolyancz |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 18 Пол: Мужской Репутация: 0 |
Задана последовательность N чисел. N<=1000. Найдите наибольшее число в этой последовательности и укажите на какой позиции оно находится. Если число повторяется, то указать все его позиции.
Например: для последовательности 569 3 567 94 569 219 546 Ответ: 569 1 5 Впорос: как выглядит функция определения наибольшего числа и расчета его размещений? |
Ozzя |
Сообщение
#2
|
Гуру Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: 16 |
Последовательность как хранится? В массиве? Или массивы использовать нельзя?
|
Kolyancz |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 18 Пол: Мужской Репутация: 0 |
|
amega |
Сообщение
#4
|
? Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: 4 |
один из ваирантов;
|
volvo |
Сообщение
#5
|
Гость |
Это можно сделать за один проход по основной последовательности... В случае, когда N может достигать 1000, это желательно делать именно за один, а не за два прохода...
P.S. К тому же, amega, твой вариант не отработает, если в исходной последовательности нет чисел больше 0... Сообщение отредактировано: volvo - |
amega |
Сообщение
#6
|
? Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: 4 |
тогда поменять прото начальное max:=0;
а можеш выложить алгоритм за один проход ? |
volvo |
Сообщение
#7
|
Гость |
Цитата тогда поменять прото начальное max:=0; Тогда не отработает, если все числа - меньше чем 0... Все проще: надо присваивать max первому элементу последовательности...Вот однопроходный алгоритм: max := a[1]; Сообщение отредактировано: volvo - |
amega |
Сообщение
#8
|
? Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: 4 |
смотри а если у нас 1ий елент максимальный И он только один что происходит (например 99 1 2 3 2 1 1 5)
max := a[1]; j := 0; <------------------------------------------------ j=0 for i := 1 to n do begin if a[i] = max then begin <-------------------------------------------- 1ий елемент максимальній inc(j); b[j] := i; <------------------------------------------- b[0]:=1; end else if a[i] > max then begin <---- вариант на елс выполнятся не будет max := a[i]; j := 1; b[j] := i; <---- а значит j не присвоится 1 end; end; for i := 1 to j do <------------------------------------------ кода выводим начинаем выводить с b[1] !!!!! write(b[i]:5); |
Айра |
Сообщение
#9
|
Профи Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: 25 |
if a[i] = max then begin |
amega |
Сообщение
#10
|
? Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: 4 |
а, ну да недогледел чуть-чуть
|
Kolyancz |
Сообщение
#11
|
Новичок Группа: Пользователи Сообщений: 18 Пол: Мужской Репутация: 0 |
Да, все правильно. Вот полное решение, всем спасибо.
Код var J,i,n,max: integer; a :array[1..1000] of integer; b:array[1..1000] of integer; begin n:=0; while not eoln do begin inc(n); read(a[n]); end; begin max := a[1]; j := 0; for i := 1 to n do begin if a[i] = max then begin inc(j); b[j] := i; end else if a[i] > max then begin max := a[i]; j := 1; b[j] := i; end; end; writeln(max); for i := 1 to j do write(b[i]:5); readln; readln end; end. |
Текстовая версия | 23.05.2024 22:09 |