Задача. Даны два действительных числа [latex]a[/latex] и [latex]b[/latex]. Получить их сумму, разность и произведение.
[latex]a[/latex] | [latex]b[/latex] | [latex]a+b[/latex] | [latex]a — b[/latex] | [latex]ab[/latex] | Комментарий |
---|---|---|---|---|---|
0 | 0 | 0 | 0.0 | 0.0 | Пройден |
1 | 2 | 3.0 | -1.0 | 2.0 | Пройден |
100.3 | 1000.0001 | 1100.3001 | -899.7001 | 100300.01003 | Не пройден из-за ошибки округления |
1.2e2 | -2.2e2 | -100 | 340 | -26400 | Пройден |
1.2e22 | -2.2e22 | -1e22 | 3.4e22 | 2.64e44 | Пройден |
1e308 | 1e308 | 1e308 | 0 | 1e616 | Не пройден — превышено макс.значение |
Диапазон тестов нужно подобрать так, чтобы произведение не выходило за допустимые значение для данного типа. Иначе получаем inf — бесконечность.
Если разница в порядках чисел велика (например, 1e38 и 1e-38), то при сложении и вычитании меньшее по абсолютной величине игнорируется.
Код программы:
1 2 3 4 5 6 7 8 9 10 11 |
#include <stdio.h> int main() { double a, b; // описание переменных для хранения входных данных scanf ("%lf%lf", &a, &b); // чтение из стандартного потока ввода double sum = a + b, dvg = a - b, mul = a * b; // описание и вычисление printf("(%lg) + (%lg) = %lg\n", a, b, sum); printf("(%lg) - (%lg) = %lg\n", a, b, dvg); printf("(%lg) * (%lg) = %lg\n", a, b, mul); return 0; } |
В программе использован тип данных с плавающей точкой и двойной точностью.
Для выполнения программы и проверки тестов можно воспользоваться следующей ссылкой.