При ошибки, вместо " sqrt:Domain error " вывести что-то другое - C (СИ)
Формулировка задачи:
Добрый вечер!
Подскажите пожалуйста, как избежать ошибки " sqrtomain error ".
Например, в случае возникновения такой ошибки, что бы программа выводила сообщение, что нету корня из √-n.
#pragma hdrstop
#pragma argsused
#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
double romb(double a, double d1);
int _tmain(int argc, _TCHAR* argv[])
{
int rep = 1; // переменная для повторения
int rezultats = 1;
double a, d1, s = 1; // сторона, диагональ 1, площадь = 1
double d2; // 2-я диагональ
do
{
system("cls"); // Очистка экрана.
printf("\n1 Side: ");
scanf("%lf", &a);
printf("Diagonal: ");
scanf("%lf", &d1);
romb(a, d1); // Вызов функции для нахождения площади ромба
printf("\nRepeat? =>1(yes)/0(no)");
printf("\n");
scanf("%i", &rep);
printf("\n");
} while (rep != 0);
}
double romb(double a, double d1) // Ф-я находит площадь ромба.
{
double d2;
double s;
d2 = 2 * sqrt(pow(a,2)-pow(d1/2,2)); // Находим 2-ю диагональ - d2
printf("\nDiagonal d2 =: %.02lf", d2);
s = ( d1 * d2 ) / 2; // Находим площадь ромба
//printf("\nArea of rhombus: %.02lf",s);
return printf("\nArea of rhombus: %.02lf",s); // Возвращаем результат в main();
}Решение задачи: «При ошибки, вместо " sqrt:Domain error " вывести что-то другое»
textual
Листинг программы
if (arg<0) {printf ("Error, arg is negative"); exit(1);}
else {... sqrt(arg).....}
Объяснение кода листинга программы
- Проверка входного аргумента на отрицательность.
- Если аргумент отрицательный, то выводится сообщение об ошибке и программа завершается.
- Заголовок
elseуказывает на то, что после проверки аргумента следует какой-то код. - Код внутри блока
elseвыполняет вычисление квадратного корня с использованием функции sqrt. - Результат вычисления сохраняется в переменной
sqrt_arg. - Код после вычисления квадратного корня может быть не указан в предоставленном фрагменте.
- В случае возникновения ошибки во время вычисления квадратного корня, вместо сообщения
sqrt:Domain errorбудет выведено другое сообщение об ошибке. - Сообщение об ошибке может быть задано в виде строки в переменной
error_message. - Вывод сообщения об ошибке осуществляется с помощью функции printf.
- Номер выхода из программы указывается в функции exit.
- Значение 1, переданное в функцию exit, указывает на серьезную ошибку, что приводит к прекращению работы программы.
- Предоставленный код не содержит определения переменной
arg, которая используется в условии проверки. - Предоставленный код не содержит определения переменной
sqrt_arg, которая используется для сохранения результата вычисления квадратного корня. - Предоставленный код не содержит определения переменной
error_message, которая используется для хранения сообщения об ошибке. - В предоставленном коде не указаны другие возможные проверки или действия, которые могут быть выполнены при ошибке.
- Код может быть более сложным и содержать дополнительные проверки или действия, которые не указаны в предоставленном фрагменте.
- Отсутствие определения переменной
argможет быть связано с тем, что она передается в функцию из другого фрагмента кода. - Отсутствие определения переменной
sqrt_argможет быть связано с тем, что результат вычисления квадратного корня сохраняется в другой переменной или не сохраняется вовсе. - Отсутствие определения переменной
error_messageможет быть связано с тем, что сообщение об ошибке задается непосредственно в вызове функции printf. - Предоставленный код может быть частью более крупной программы, и его можно использовать в сочетании с другими фрагментами кода для решения задачи.