Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР13-С++17-мая-2012.doc
Скачиваний:
13
Добавлен:
15.09.2019
Размер:
1.3 Mб
Скачать

2.4.5.2. Пример для варианта 30

Методом трапеций вычислить интеграл

Для вычисления интеграла

отрезок интегрирования [a, b] делится на n равных частей (n - четное) и используется квадратурная формула

2.4.5.3. Программа

//Численное интегрирование методом трапеций

//Задание № 5

//Вариант 30

//Автор Макова Зося Викторовна, гр. ИНФО-101

//17.05.2012

#include<stdio.h>

#include<iostream.h>

#include<conio.h>

#include<math.h>

/*Главная функция*/

int main()

{float a, b,I; //Описание переменных

int n;

float integral (float a, float b, int n); // Прототип функции

//Ввод исходных данных

cout << "Введите нижнюю границу интеграла a = ";

cin >> a;

cout << "Введите верхнюю границу интеграла b = ";

cin >> b;

cout << "Введите число участков разбиения подинтегральной"<< endl;

cout << "функции n (n - четное): ";

cin >> n;

// Вычисления интеграла

I= integral (a, b, n);

cout <<"\n Значение интеграла равно: " <<I << endl;

cout << "Нажмите любую клавишу..." ;

getch ();

return 0;

}

// --------------------------------------------------------

/*Функция, вычисляющая интеграл */

float integral(float a, float b, int n)

{float S, h;

int i;

float f(float x); //Прототип подинтегральной функции

//Вычисления подинтегрального выражения

h =(b - a)/n;

S = (f(a) +f(b))/2; //Сумма крайних членов ряда

for (i= 1; i<n; i++)

S =S + f(a + h*i); //Вычисление ряда

return h*S; }

// ---------------------------------------------------------------------------

/*Функция, вычисляющая подынтегральное выражение */

float f(float x)

{ return x*cos(x);

}

2.4.5.4. Тестирование

2.4.5.5. Типичные ошибки при выполнении работы

1. Если в последовательности функций вызываемая функция расположена после вызывающей, то последняя обязательно должна содержать прототип вызываемой функции. Ошибка, связанная с нарушением этого правила перехватывается компилятором и, следовательно, не является фатальной.

2. Неправильно описывается подынтегральное выражение.

Вопросы для самоконтроля

1. Что такое подпрограмма и для чего она используется?

2. Что такое модульное программирование?

3. Как определить функцию?

4. Как передавать функции информацию?

5. Каково различие между формальным и фактическим аргументами?

6. Где необходимо описывать аргументы?

8. Где необходимо описывать локальные переменные?

9. Когда и как использовать оператор return?

10. Какие действия следует выполнить, чтобы использовать функцию для решения задачи?

11. Как описывается функция?

12. Как объявляется функция?

13. Роль прототипа?

14. Для чего нужны формальные параметры?

15. Как вызывается функция?

16. Способы передачи параметров?

17. Приемы передачи параметров-массивов?

18. Как передать результаты вычислений из функции?

19. Как используется тип void в описании функций?

20. В каких целях можно использовать оператор return?

21. Передача значений параметров по умолчанию?

22. Что стоит за объявлением функции inline?

23. В каких случаях используется спецификатор const при передаче параметров?

24. Пояснить термин «перегружаемые подпрограммы»? Почему допускается такая возможность?

25. Как формируется заголовок функции?

26. Какие из приведенных заголовков функций содержат ошибки:

voidfl {int i, int *j, double s)

voidf2{int i,j, double a,b, char c)

void {int i, int k,) intf4(int i,

char c)

27. Что представляет собой тело функции?

28. В каких случаях оператор return задается без параметров?

29. Сколько величин можно возвратить из функции с помощью оператора return?

30. Может ли функция содержать оператор return более одного раза?

31. Зачем нужен прототип функции? В каких случаях прототип не является обязательным?

32. Чем отличается синтаксис написания прототипа функции от синтаксиса ее заголовка?

33. Описание и объявление функции с параметрами и без параметров.

34. Оператор return. Использование в функциях.

35. Область действия и область видимости переменных.

36. Параметры и аргументы функций.

37. Передача параметров функции по значению и по ссылке.

38. Использование рекурсивных функций.

39. Функции с переменным числом параметров.

40. Использование указателей на функции.

41. Есть ли ошибка в записи заголовка функции int sum(int a, b)?

42. Есть ли ошибки в описании функции

void sr(int a,int b,int &s);

{ s=a+b; return s;}

43. Отличаются ли результаты двух функций (и изменяются ли аргументы функций):

int value(int a) {return a*=a; }

void ref(int &cref) {cref*=cref; }

44. Напишите заголовки для каждой из следующих функций:

а) Функция hipotenuse, которая принимает два аргумента с плавающей точкой side1и side2 (длины катетов прямоугольного треугольника) и возвращает результат (длину гипотенузы) с плавающей точкой.

б)Функция smallest, которая принимает три целых значения и возвращает наименьшее значение среди трех заданных.

в) Функция InToFloat, которая принимает целый аргумент number и возвращает результат с плавающей точкой.

45. Найдите ошибку в каждом из следующих фрагментов программы и объясните, как можно исправить ошибку:

а) int sum(int i) б) void f(float a)

{ if (n==0) { float a;

return 0; cout<<a<<endl;

else }

n+sum(n-1);

}