Автор |
Сообщение |
Weman
Репутация: +5
Возраст: 20
Гороскоп:
Пол:
Сообщения: 536
Стаж: 1 год 11 месяцев
|
[] 27.02.2007 21:11 Калькулятор по УВП |
|
|
Люди, помогите! Может у кого есть по учебно-вычислительной практике (УВП) программа-кальклятор, которая выполняем сложение, вычитание, умножение, деление (или хотя бы часть этих действий) чисел в форме с плавающей запятой? Срочно надо!
Преподаватель - Суетина.
Кто чем может помочь? В долгу не останусь! Заранее спасибо!
_________________ Завтранах-универсальный ответ на любую просьбу.
|
|
Вернуться к началу |
|
|
Sovie
Репутация: +20/–1
Пол:
Откуда: Санкт-Петербург
Сообщения: 787
Стаж: 2 года 7 месяцев
|
[] 27.02.2007 21:24 |
|
|
Прости, что-то не догоняю, а чём написание программы-калькултора для чисел с плавающей запятой отличается от такой же программы для чисел с фиксированной запятой?
В каком виде вводятся числа? Сразу формулой?
На каком языке пишешь?
|
|
Вернуться к началу |
|
|
Weman
Репутация: +5
Возраст: 20
Гороскоп:
Пол:
Сообщения: 536
Стаж: 1 год 11 месяцев
|
[] 27.02.2007 21:31 |
|
|
Число с плавающей запятой состоит из мантиссы и порядка.
Чтобы ввести число, сначало вводим мантиссу числа, потом порядок. Так для 2 чисел.
Пишу на С/С++.
_________________ Завтранах-универсальный ответ на любую просьбу.
|
|
Вернуться к началу |
|
|
Sovie
Репутация: +20/–1
Пол:
Откуда: Санкт-Петербург
Сообщения: 787
Стаж: 2 года 7 месяцев
|
[] 27.02.2007 22:38 |
|
|
Ну, может, я и не понимаю чего, но в Си и С++ предусмотрен ввод таких чисел сразу. Например,
Код: #include <stdio.h>
void main()
{
float a, b;
scanf("%e %e", &a, &b);
printf("%f %f\n", a, b);
printf("a + b = %f [%e]\n", a+b, a+b);
}
Вводи, скажем, 1e-1 и 1e2
|
|
Вернуться к началу |
|
|
Weman
Репутация: +5
Возраст: 20
Гороскоп:
Пол:
Сообщения: 536
Стаж: 1 год 11 месяцев
|
[] 27.02.2007 22:44 |
|
|
Sovie
блин, забыл сказать, что числа вводятся в двоичной системе счисления. Двоичное число со знаком - в старшем разряде - знак числа.
Если было бы в 10СС было бы все намного проще
_________________ Завтранах-универсальный ответ на любую просьбу.
|
|
Вернуться к началу |
|
|
Sovie
Репутация: +20/–1
Пол:
Откуда: Санкт-Петербург
Сообщения: 787
Стаж: 2 года 7 месяцев
|
[] 27.02.2007 22:51 |
|
|
А как ты будешь организовывать хранение? Например, можно в виде символьного массива. А можно с помощью побитовых опеаций. А числа какой разрядности?
|
|
Вернуться к началу |
|
|
Weman
Репутация: +5
Возраст: 20
Гороскоп:
Пол:
Сообщения: 536
Стаж: 1 год 11 месяцев
|
[] 27.02.2007 22:54 |
|
|
Sovie
хранение будет в виде символьного массива - это 100%.
Преподаватель сказал делать 32-х разрядную.
_________________ Завтранах-универсальный ответ на любую просьбу.
|
|
Вернуться к началу |
|
|
Kabal
Инноватор-самоучка
Репутация: +19/–1
Возраст: 26
Гороскоп:
Пол:
Откуда: Санкт-Петербург
Сообщения: 3252
Стаж: 2 года 9 месяцев
|
[] 28.02.2007 1:10 |
|
|
Weman
Таким образом твоя задача сводится к переводу из двоичного в нормальный, произведение операции и обратный перевод . Но это конечно несерьезное, но вполне неплохое решение . А уж если будешь делать только с массивом, то сложение и вычитание тебе проблем не доставят, а вот умножение и тем более деление .... будет весело разбираться со сдвигами
_________________
|
|
Вернуться к началу |
|
|
Weman
Репутация: +5
Возраст: 20
Гороскоп:
Пол:
Сообщения: 536
Стаж: 1 год 11 месяцев
|
[] 28.02.2007 6:40 |
|
|
Kabal
вариант с выполнением действий в 10СС отпадает - нам так нельзя . Если были бы числа с фиксированной запятой, то там было бы легче.
А тут вроде чтобы сделать сложение необходимо:
1) Уравнивание порядков - меньший порядок делаем большим.
2) Мантиссы обоих слагаемых переводятся в модифицированный дополнительный код.
3) Сложение мантисс.
4) Мантисса суммы переводится в прямой код, если нужно нормализуется, округляется и приписывается порядок.
Преподаватель нам сказала, что вроде есть какие-то специальные алгоритмы для этих действий, и согласно их можно "легко" выполнить эти действия.
_________________ Завтранах-универсальный ответ на любую просьбу.
|
|
Вернуться к началу |
|
|
Kabal
Инноватор-самоучка
Репутация: +19/–1
Возраст: 26
Гороскоп:
Пол:
Откуда: Санкт-Петербург
Сообщения: 3252
Стаж: 2 года 9 месяцев
|
[] 28.02.2007 7:52 |
|
|
Weman
Сложение и вычитание - это достаточно просто, как ты и сказал. А вот с умножением и тем более делением - мучаться тебе не перемучаться . Я поищу щас алгоритмы операции деления/умножения с плавающей запятой.
_________________
|
|
Вернуться к началу |
|
|
Weman
Репутация: +5
Возраст: 20
Гороскоп:
Пол:
Сообщения: 536
Стаж: 1 год 11 месяцев
|
[] 28.02.2007 15:22 |
|
|
Kabal спасибо за содействие в решении проблемы!
Буду ждать, а заодно и сам поищу - может что-нибудь нарою.
_________________ Завтранах-универсальный ответ на любую просьбу.
|
|
Вернуться к началу |
|
|
Weman
Репутация: +5
Возраст: 20
Гороскоп:
Пол:
Сообщения: 536
Стаж: 1 год 11 месяцев
|
[] 05.03.2007 1:43 |
|
|
Нам преподаватель сказал, что надо отслеживать еще и переполнение - в мантиссе и в порядке. Как переполнение может получится в мантиссе я представляю (при сложении значащий разряд может перенестись в знаковый). А вот как переполнение может получиться в порядке мне что то не понятно.
Может что подскажете?
_________________ Завтранах-универсальный ответ на любую просьбу.
|
|
Вернуться к началу |
|
|
|
|