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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: