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

2. Задание

2.1. Изучить теоретические сведения

2.1.1. Изучить операции сравнения.

2.1.2. Изучить логические операции.

2.1.3. Изучить приоритет операций.

2.1.4.Изучить понятие оператора перехода.

2.1.5. Изучить понятие составного оператора.

2.1.6. Изучить понятие пустого оператора.

2.1.7. Изучить понятие разветвляющегося вычислительного процесса.

2.1.8. Изучить средства языка С++ для реализации разветвляющегося вычислительного процесса.

2.1.9. формы условного оператора if/

2.1.10. Изучить оператор выбора switch.

2.2. Разобрать и выполнить примеры к данной лабораторной работе.

2.3. Написать и отладить семь программ на языке С++.

2.4. Задания для выполнения на занятиях

2.4.1. Задание 1. Табуляция неразветвляющейся функции

2.4.1.1. Условие задания

Составить программу для вычисления таблицы значений функции y = f(x) (табл. 7.1) для аргумента x изменяющегося в интервале x  [хнач, хкон ] с шагом х.

Результаты и исходные данные вывести на экран дисплея.

Реализовать циклический процесс табуляции функции y = f(x) четырьмя способами; 1) с помощью оператора for; 2) с помощью оператора while; 2) с помощью оператора do … while; 2) с помощью операторов if и goto;

Таблица 7.1

Варианты заданий

Функция

Интервал

нач, хкон ]

Шаг х

1

x  [0, 3]

0,1

2

x  [1, 2]

0,1

3

x  [1, 5]

0,2

4

x  [1, 5]

0,2

5

x  [-5, -1]

0,4

6

x  [=5, -1]

0,4

7

x  [1, 4]

0,2

8

x  [1, 4]

0,2

9

x  [1, 3]

0,1

10

x  [1, 3]

0,1

11

x  [0, 2]

0,1

12

x  [1, 3]

0,1

13

x  [0, 5]

0,1

14

x  [0, 5]

0,2

15

x  [0, 1]

0,05

16

x  [0, 1]

0,05

17

x  [1, 5]

0,2

18

x  [1, 5]

0,2

19

x  [1, 3]

0,1

20

x  [2, 3]

0,1

21

x  [1, 2]

0,05

22

x  [1, 2]

0,05

23

x  [0, 5]

0,5

24

x  [0, 5]

0,5

25

x  [-3, 0]

0,1

26

x  [-3, 0]

0,1

27

x  [1, 3]

0,2

28

x  [1, 3]

0,2

29

x  [0, 3]

0,1

30

x  [0, 1]

0,1

2.4.1.2. Цикл типа арифметической прогрессии for для варианта 30

Ниже представлена программа табулирования функции с использованием цикла for:

Программа

// программа табулирования функции y=f(х)

// на интервале от хn до xk с шагом dx

#include <conio.h> // подключение библиотеки функций ввода-вывода

#include <iostream.h> // подключение библиотеки потокового ввода-вывода

#include <math.h> // подключение библиотеки математических функций

#include <iomanip.h> // подключение библиотеки средств манипулирования потоками

int main ()

{

// Объявление переменных

float a, x, xn, xk, dx,fx;

// Ввод значений для переменных а, хn, xk, dx

cout << "Bвeдите параметр а: "; cin >> a;

cout << "Bвeдите хn: " , cin >> xn;

cout << "Введите xk: ", cin >> xk;

cout << "Bвeдите шаг dx: ", cin >> dx;

// вывод заголовка и шапки таблицы

cout << " Та6лица значений функции у = f (х) " << endl

<< " |-------------------------- -----------|" << endl

<< " | х | у = f (х) |" << endl

<< " |-----------------|--------------------|" << endl;

// Табуляция функции у = f (x)

for(x=xn;x<=xk;x+=dx)

{

// Вычисление значения функции fx

fx=log(1+2*exp(-x*x))*3*a/(x*x+4);

// Вывод очередной строки таблицы

// Вывод аргумента x

cout << " I " << "x= "<< setw(9) << x << " I ";

// Вывод значения функции fx

cout << " " << setw(5) << "fx= " << setw(10)<<fx << " I " << endl;

}

cout << " |-----------------|--------------------|" << endl;

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

getch();

return 0;

}

Результаты тестирования

2.4.1.3. Цикл типа с предусловием while для варианта 30

Ниже представлена программа табулирования функции с использованием цикла while:

Программа

// программа табулирования функции y=f(х)

// на интервале от хn до xk с шагом dx

#include <conio.h> // подключение библиотеки функций ввода-вывода

#include <iostream.h> // подключение библиотеки потокового ввода-вывода

#include <math.h> // подключение библиотеки математических функций

#include <iomanip.h> // подключение библиотеки средств манипулирования потоками

int main ()

{

// Объявление переменных

float a, x, xn, xk, dx,fx;

// Ввод значений для переменных а, хn, xk, dx

cout << "Bвeдите параметр а: "; cin >> a;

cout << "Bвeдите хn: " , cin >> xn;

cout << "Введите xk: ", cin >> xk;

cout << "Bвeдите шаг dx: ", cin >> dx;

// вывод заголовка и шапки таблицы

cout << " Та6лица значений функции у = f (х) " << endl

<< " |-------------------------- -----------|" << endl

<< " | х | у = f (х) |" << endl

<< " |-----------------|--------------------|" << endl;

// Табуляция функции у = f (x)

x=xn;

while (x<=xk)

{

// Вычисление значения функции fx

fx=log(1+2*exp(-x*x))*3*a/(x*x+4);

// Вывод очередной строки таблицы

// Вывод аргумента x

cout << " I " << "x= "<< setw(9) << x << " I ";

// Вывод значения функции fx

cout << " " << setw(5) << "fx= " << setw(10)<<fx << " I " << endl;

x+=dx;

}

cout << " |-----------------|--------------------|" << endl;

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

getch();

return 0;

}

Результаты тестирования

2.4.1.4. Цикл типа с постусловием do …while для варианта 30

Ниже представлена программа табулирования функции с использованием цикла do …while:

Программа

// программа табулирования функции y=f(х)

// на интервале от хn до xk с шагом dx

#include <conio.h> // подключение библиотеки функций ввода-вывода

#include <iostream.h> // подключение библиотеки потокового ввода-вывода

#include <math.h> // подключение библиотеки математических функций

#include <iomanip.h> // подключение библиотеки средств манипулирования потоками

int main ()

{

// Объявление переменных

float a, x, xn, xk, dx,fx;

// Ввод значений для переменных а, хn, xk, dx

cout << "Bвeдите параметр а: "; cin >> a;

cout << "Bвeдите хn: " , cin >> xn;

cout << "Введите xk: ", cin >> xk;

cout << "Bвeдите шаг dx: ", cin >> dx;

// вывод заголовка и шапки таблицы

cout << " Та6лица значений функции у = f (х) " << endl

<< " |-------------------------- -----------|" << endl

<< " | х | у = f (х) |" << endl

<< " |-----------------|--------------------|" << endl;

// Табуляция функции у = f (x)

x=xn;

do

{

// Вычисление значения функции fx

fx=log(1+2*exp(-x*x))*3*a/(x*x+4);

// Вывод очередной строки таблицы

// Вывод аргумента x

cout << " I " << "x= "<< setw(9) << x << " I ";

// Вывод значения функции fx

cout << " " << setw(5) << "fx= " << setw(10)<<fx << " I " << endl;

x+=dx;

}

while (x<=xk);

cout << " |-----------------|--------------------|" << endl;

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

getch();

return 0;

}

Результаты тестирования

2.4.1.5. Цикл с помощью условного оператора if и оператора перехода

goto для варианта 30

Ниже представлена программа табулирования функции с использованием операторов if и goto:

Программа

// программа табулирования функции y=f(х)

// на интервале от хn до xk с шагом dx

#include <conio.h> // подключение библиотеки функций ввода-вывода

#include <iostream.h> // подключение библиотеки потокового ввода-вывода

#include <math.h> // подключение библиотеки математических функций

#include <iomanip.h> // подключение библиотеки средств манипулирования потоками

int main ()

{

// Объявление переменных

float a, x, xn, xk, dx,fx;

// Ввод значений для переменных а, хn, xk, dx

cout << "Bвeдите параметр а: "; cin >> a;

cout << "Bвeдите хn: " , cin >> xn;

cout << "Введите xk: ", cin >> xk;

cout << "Bвeдите шаг dx: ", cin >> dx;

// вывод заголовка и шапки таблицы

cout << " Та6лица значений функции у = f (х) " << endl

<< " |-------------------------- -----------|" << endl

<< " | х | у = f (х) |" << endl

<< " |-----------------|--------------------|" << endl;

// Табуляция функции у = f (x)

x=xn;

START:

// Вычисление значения функции fx

fx=log(1+2*exp(-x*x))*3*a/(x*x+4);

// Вывод очередной строки таблицы

// Вывод аргумента x

cout << " I " << "x= "<< setw(9) << x << " I ";

// Вывод значения функции fx

cout << " " << setw(5) << "fx= " << setw(10)<<fx << " I " << endl;

x+=dx;

if (x<=xk) goto START;

FINISH:

cout << " |-----------------|--------------------|" << endl;

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

getch();

return 0;

}

Результаты тестирования