Последовательность вещественных чисел
Помогите пожалуйста решить задачу:
Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, номер числа, по абсолютной величине самого близкого к своему номеру. Если таких чисел несколько - вывести все номера этих эелементов. Я её могу сделать, если бы не нужно было выводить все номера всех таких элементов. Пробовал через строки но там у меня такая муть получается... :( Заранее очень благодарен! |
Язык, черт побери, какой?!!!
Ох, извините - ну сил уже нет задавать этот вопрос каждому второму обратившемуся! Ну неужели непонятно, что нужно прежде всего язык программирования указать? |
Ой извиняюсь, Delphi...
|
Алгоритм:
Определяете массив с числом элементов заведомо большим, чем количество чисел в последовательности. Заполняете массив значениями путем ввода последовательности чисел, причем признаком окончания ввода является 0. Находите наименьшую разницу между абсолютным значением элемента массива и его номером Выводите все элементы массива, для которых эта разница действительна. |
Alex меня немного опередил с алгоритмом, но всё же приведу свои соображения:
1. Вводите массив искомых НОМЕРОВ, например, Num[i]. 2. Пусть N - количество элементов, обладающих указанным свойством. 3. Начинаете с того, что вычисляете Min=|a1-1|, где a1 - первый введенный элемент, N:=1 и Num[N]:=1. 4. Если последующие разности превышают Min и встретился еще элемент с номером i, у которого значение разности равно Min, то N увеличиваете на 1 и Num[N]:=i и т.д. до конца. 5. Если встретился i-тый элемент ai, у которого значение модуля разности с его номером меньше Min, то Min:=|ai-i|, N:=1, Num[N]:=i и далее п.4. 6. В конце вывести массив Num от i=1 до N. |
Если бы всё было так просто... :) В том то и дело, что неизвестно сколько элементов будет в последовательности. И я не могу использовать массив и т.п.- Запрещено Преподом!
Я вот как уже сказал, пробовал использовать строки вместо массива, но там я окончательно запутался переводя из строк в числа и т.д. |
Цитата:
Значит, массив нельзя? Но, может быть, можно файл? Тогда сбрасывайте номера в файл, а при изменении значения Min очищайте его командой rewrite. Или тоже нельзя? |
А каким образом хранить последовательность в памяти, случаем, препод вам не объяснял? Куда вы числа должны сохранять, чтобы обработку сделать? В стек? Или в файл? Если в файл - способ выше описан.
|
Цитата:
|
Цитата:
|
Часовой пояс GMT +4, время: 13:28. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.