Найти значение функции
( a ) x | −lg(a | +1) | |||
Y (X)= | (2.2) | ||||
(a) | |||||
3−( a )2 | |||||
«Практикум по программированию на языке C в среде VS C++»
упростив вычисления за счет использования скобочных форм и/или дополнительных пе-ременных (в этом предложении и в дальнейшем конструкция «А и/или Б» обозначает «или А, или Б, или А и Б одновременно»). Для контроля правильности результата вы-полнить вычисление по формуле (2.2) без использования скобочных форм и дополни-тельных переменных.
Протестировать программу на значениях X=(0,5; 2) и A=(1; -1; 2; -2; 4; -4). Обра-тить внимание на вывод значений выражений при значениях аргументов, не принадле-жащих областям определения входящих в выражения функций.
Программа
#include "stdafx.h" #include "math.h"
int _tmain(int argc, _TCHAR* argv[])
{
double A=2.0, X=0.5, B, C, Y1, Y2;
//Ввод исходных данных printf("input X: "); scanf("%lf",&X); printf("input A: "); scanf("%lf",&A);
//Вычисление выражения
// - с использованием дополнительных переменных
|
|
B=A/2;
C=B*B;
// - непосредственно по формуле (2.2)}
Y2=(pow(A/2,X)-log10(A/2+1)) / (pow(A/2,3)
-pow(A/2,2));
//Вывод вычисленных значений с надписями printf("\n\t\tY1\t\t\tY2"); printf("\n\t\t%e\t\t%e\n",Y1,Y2); return 0;
}
Исходные данные для тестирования программы подобраны так, чтобы проверить:
1) правильность вычислений на допустимых значениях функций вычисления де-сятичного логарифма (выполняемого в программе библиотечной функцией log10) и воз-
«Практикум по программированию на языке C в среде VS C++»
ведения вещественного числа в степень (выполняемого в программе библиотечной функцией pow), и
2) реакцию программы на недопустимые значения аргументов функций (вычис-ление логарифма при отрицательном аргументе и возведение отрицательного вещест-венного числа в дробную степень).
Ниже представлены соответствующие примеры результатов работы программ
1)
input X: 2 input A: 1
Y1 Y2
-5.912699e-001 -5.912699e-001
2)
input X: 0.5 input A: -1
Y1 Y2
-1.#IND00e+000 -1.#IND00e+000
В примере 2) выведенные значения -1.#IND00e+000 не являются числами. Та-кие и подобные им тексты указывают на ситуации, когда численное решение получить невозможно. Это не только использование недопустимых значений аргументов функций, но и невозможность представления результата арифметической операции, например, при делении на ноль. Для повышения информативности программы желательно не допус-кать возникновения подобных ситуаций. Простейшим способом является проверка зна-чений операндов и в случае их недопустимости, вывод соответствующего сообщения и завершение работы программы. В представленных далее заданиях обработка подобных ситуаций не предполагается, но при их возникновении необходимо найти и объяснить причину.