Последовательность чисел, 2 наименьших числа |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Последовательность чисел, 2 наименьших числа |
topoR |
Сообщение
#1
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: 0 |
Помогите решить задачу
Вводится последовательность чисел. 0 - конец последовательности. НАйти 2 наименьших числа. -------------------- Всё, что не убивает нас, - делает нас сильнее...
|
volvo |
Сообщение
#2
|
Гость |
В чем проблема? Изначально min_1, min_2 = максимально возможному значению, которое может быть введено... Если числа целые - то MaxInt, например...
А потом делаешь следующее: если очередное введенное с клавиатуры число (назовем его X) не 0, то сравниваешь его сначала с min_1 (это наименьшее из чисел), и если новое число строго меньше него, то min_2 := min_1; Если же min_1 < X < min_2, то min_2 := X; Внимание! Все эти сравнения производятся только, если X отличается от значений КАК min_1, ТАК и min_2 !!! Иначе ничего делать не надо, переходишь ко вводу следующего числа... Это алгоритм (сорри, если сумбурно, но я его составлял с готовой программы, поэтому...) Попробуй разобраться, в нем и хотя бы начни делать что-то... Не получится - приходи Сообщение отредактировано: volvo - |
volvo |
Сообщение
#3
|
Гость |
Похоже в задании есть некоторая двусмысленность... Что есть 2 наименьших числа, например, в массиве
<2, 3, 6, 7, 2, 3> ? Это будут 2, 2 или 2, 3 ? Т.е., тебе надо найти 2 абсолютно минимальных числа, или 2 разных минимальных числа? Мой алгоритм - для нахождения 2-х разных... Чтобы найти 2 абсолютно минимальных - выкини из того, что я написал абзац со словом "Внимание!" |
Lapp |
Сообщение
#4
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Изначально min_1, min_2 = максимально возможному значению, которое может быть введено... Если числа целые - то MaxInt, например... volvo, а есть ли необходимость связываться с максимальным возможным значением? Иногда найти его не так просто.. Можно, мне кажется, просто в min_2 безусловно положить первое введенное. Если второе введенное меньше него, сделать переприсвоение (как описано), если нет - положить во второе. Далее по твоему алгоритму.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
volvo |
Сообщение
#5
|
Гость |
Цитата Можно, мне кажется, просто в min_2 безусловно положить первое введенное. Догадайся, где здесь узкое место? Для этого надо вынести ввод по крайней мере первого числа из цикла, а это значит, дублирование кода... Или усложнять программу проверками, какое именно число введено, для чего придется вводить какой-нибудь счетчик... |
topoR |
Сообщение
#6
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: 0 |
Блин, люди, я в паскале человек относительно новый. У меня вопрос появился, как вводить последовательность чисел, (которая вдобавок оканчивается на 0), чтобы в последствии сравнивать числа с min_1 и min_2?..С помощью array ?!
Только не смейтесь Завтра лабу надо сдавать.. Сообщение отредактировано: topoR - -------------------- Всё, что не убивает нас, - делает нас сильнее...
|
Lapp |
Сообщение
#7
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Догадайся, где здесь узкое место? Для этого надо вынести ввод по крайней мере первого числа из цикла, а это значит, дублирование кода... Или усложнять программу проверками, какое именно число введено, для чего придется вводить какой-нибудь счетчик... Да, я все это, конечно, понимаю.. Я бы не стал называть это узким местом.. Код, действительно, немного увеличится. Замедления можно избежать, если сделать заполнение первых двух отдельным блоком. Но мне кажется, оно того стОит.. Добавлено через 6 мин. как вводить последовательность чисел, чтобы в последствии сравнивать числа с min_1 и min_2?..С помощью array ?! Только не смейтесь Нет, вводи в цикле и сразу в этом же цикле делай сравнения. Типа так:
Я тут ввел еще и счетчик введенных чисел - думаю, может пригодиться.. А чего смеяться? Все начинали.. Напиши, что у тебя получается.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
topoR |
Сообщение
#8
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: 0 |
. Не работает по-моему ( -------------------- Всё, что не убивает нас, - делает нас сильнее...
|
Lapp |
Сообщение
#9
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Не работает по-моему ( Угу. Ты забыл расставить операторные скобки, begin и end. Без них после оператора IF выполняется (в случае выполнения условия) только один оператор. Короче, посмотри внимательно, что я добавил.. program Find2min; Еще - добавь пару пробелов при выводе результата, а также подумай, что будет, если последовательность будет состоять только из одного числа, а может и совсем пустая (сразу ввели 0). Еще совет: обрати внимание на форматирование программного текста в моем варианте. Если усвоишь, тебе это поможет. Кстати, тут как раз про begin и end (и не только), то есть про твою ошибку.. Успехов! -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
topoR |
Сообщение
#10
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: 0 |
Программа работает, спасибо Ошибку полностью осознал..
Сейчас подумаю над выходом из ситуации, когда почти сразу вводится ноль.. Сообщение отредактировано: topoR - -------------------- Всё, что не убивает нас, - делает нас сильнее...
|
topoR |
Сообщение
#11
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: 0 |
Вот еще одна задачка.. Такого же типа.
Дана последовательность чисел, также заканчивающаяся на ноль. Определить, сколько раз в последовательности числа меняют свой знак. Вроде бы с помощью массива решается элементарно. Однако их запретили использовать .. Решил без них.. Боюсь, что заставят перерешивать всвязи с отдельным вводом первого числа и всей последовательности в целом. Кто чем поможет? . -------------------- Всё, что не убивает нас, - делает нас сильнее...
|
Текстовая версия | 23.12.2024 21:08 |