Войти

Показать полную графическую версию : Округление чисел массива до сотых(C++ Builder)


KnightMrak
25-11-2012, 15:17
Доброго времени суток.
Помогите решить вот эту задачу:

Условие задания:

Создать подпрограмму-процедуру, входом которой является массив из 7-ми действительных чисел, а выходом - массив этих чисел, округленных до сотых.

Я пытался сделать через Memo1 в которое мы вводим цифры, а выводим в Memo2 с (FormatFloat("0,00",k));
При компилирование он мне вывел совсем другие числа(видимо индексы).
P.S.
Вводим в StringGrid1
Выводить нужно в StringGrid2

Заранее благодарен за помощь.

lxa85
25-11-2012, 19:02
Я пытался сделать »
Можно увидеть эту попытку?

AMDBulldozer
25-11-2012, 23:58
KnightMrak, задание сформулировано не совсем полно. Каков может быть диапазон исходных вещественных чисел?
Сейчас поясню, почему это имеет значение.
1-ый случай: умножаем исходное число на 100.0 (вещественное, чтобы избежать лишнего преобразования типов, хотя умный компилятор сделает это сам). Преобразуем число в целое отсечением дробной части (можем предварительно прибавить 0.005, чтобы округление производилось в сторону с минимальной погрешностью. Или вычесть, если число отрицательное). Делим полученное целое на 100.0 вещественное - дело сделано.
Но таким образом можно округлять только небольшие числа. Не выходящие (после умножения на 100) за пределы представления целого числа заданной разрядности с учетом наличия или отсутствия знака.
2-ой случай: если Вы не хотите накладывать ограничения на величину исходного вещественного числа, его необходимо предварительно разделить на целую и дробную части. К примеру, функцией modf. Целая часть остается неизменной, дробная округляется до сотых описанным выше способом. Потом целая и дробная части складываются.
Главное, чтобы такая функция возвращала целую часть исходного числа как указатель на вещественную переменную. Если указатель будет на целое, большого выигрыша от её использования Вы не получите.




© OSzone.net 2001-2012