Лекция: Пример 2.2 выполнения задания

 

Найти значение функции

  (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 не являются числами. Та-кие и подобные им тексты указывают на ситуации, когда численное решение получить невозможно. Это не только использование недопустимых значений аргументов функций, но и невозможность представления результата арифметической операции, например, при делении на ноль. Для повышения информативности программы желательно не допус-кать возникновения подобных ситуаций. Простейшим способом является проверка зна-чений операндов и в случае их недопустимости, вывод соответствующего сообщения и завершение работы программы. В представленных далее заданиях обработка подобных ситуаций не предполагается, но при их возникновении необходимо найти и объяснить причину.

 

еще рефераты
Еще работы по информатике