Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Программирование C++ 2014n.docx
Скачиваний:
8
Добавлен:
01.07.2025
Размер:
887 Кб
Скачать
☆

Контрольные вопросы

  1. Какие базовые алгоритмические конструкции можно реализовать средствами языка С++?

  2. Что называется циклом?

  3. Что такое заголовок цикла?

  4. Что такое тело цикла?

  5. Что такое параметр цикла?

  6. Что такое итерация?

  7. Что такое зацикливание?

  8. Какие типы циклов существуют?

  9. Какие инструкции используются для реализации циклов на С++?

  10. Какая инструкция используется для реализации цикла с параметром?

  11. Можно ли использовать в теле цикла переменную, являющуюся параметром цикла?

  12. Какая инструкция используется для реализации цикла с предусловием?

  13. От чего зависит количество повторений тела цикла с предусловием?

  14. Какая инструкция используется для реализации цикла с постусловием?

  15. Какие из конструкций повторения могут привести к зацикливанию?

  16. Как работает цикл со счетчиком?

  17. В каком случае в теле цикла используются операторные скобки?

  18. Каковы отличия между циклами с пред- и с постусловием?

Пример выполнения лабораторной работы

Задание I. Составить программу табулирования функции

на отрезке [-4, 4] с шагом 0.2.

Решение

1. Математическая модель

Прежде всего определим число повторений тела цикла: .

Аргументы: переменная x вещественного типа.

Результаты: значение заданной функции y (вещественного типа).

Промежуточные величины: счетчик i целого типа.

2. Алгоритм

3. Программа

#include <iostream>

#include <conio.h>

#include <math.h>

using namespace std;

int main()

{

double x = -4, y;

for(int i=1;i<=41;i++)

{

y = exp(x)*(2.42*pow(x, 2.0)-

6.47*x+1.03)/(x-5.8);

cout<<" x = "<<x<<" y = "<<y<<endl;

x+=0.2;

}

_getch();

return 0;

}

4. Результат работы программы

…

x = -3.6 y = -0.161865

x = -3.4 y = -0.185016

x = -3.2 y = -0.210672

…

x = -2.2 y = -0.373639

…

Задание II. Для x = 0.47 найти сумму ряда

с точностью до члена ряда, меньшего (по абсолютной величине) eps = 0.0001, используя оператор цикла с предусловием. Сравнить полученную сумму со значением функции для контроля .

Решение

1. Математическая модель

Обозначим через p1 последовательные произведения нечетных чисел. Через р2 – последовательные произведения четных чисел. Поскольку в C++, есть стандартная функция для вычисления arcsin х, воспользуемся соотношением:

у = asin(x)

Аргументы: x – переменная вещественного типа, -1 < x < 1.

Результаты: summa – сумма членов ряда вещественного типа;

y – значение контрольной функции вещественного типа.

Промежуточные величины:

eps – константа, с которой сравнивается абсолютная величина текущего члена ряда: члены ряда представляют собой убывающую последовательность, поэтому согласно условию вычисление суммы членов ряда будет продолжаться до тех пор пока абсолютное значение текущего члена ряда не окажется меньше eps;

p1 – последовательные произведения нечетных чисел, вещественного типа;

р2 – последовательные произведения четных чисел, вещественного типа;

p – частное, получаемое при делении p1 на p2, вещественного типа;

n – номер члена ряда, целого типа;

u – текущий член ряда, вычисляемый по формуле , вещественного типа;

Замечание. Чтобы записать программу, используя цикл с постусловием, достаточно в приведенной ниже программе конструкцию while (abs(u) >= eps) {тело цикла} заменить на do {тело цикла} while (abs(u) >= eps);

2. Алгоритм

3. Программа

// вычисление суммы членов ряда

#include <iostream>

#include <conio.h>

#include <math.h>

using namespace std;

int main()

{// описание и инициализация заданной точности

double eps = 0.0001;

// описание переменных, ввод х, начальные // установки

double x, u, p1, p2, p;

cout<<"Введите значение x: ";

cin>>x;

int n = 1;

double summa = 0;

u = x;

p1 = 1;

p2 = 2;

// организация вычисления суммы членов ряда

while(abs(u) > eps)

{

summa += u;

p = p1/p2;

u = p*pow(x, 2*n+1)/(2*n+1);

n++;

p1 = p1*(2*n-1);

p2 = p2*2*n;

}

// вычисление значения контрольной функции

double y = asin(x);

// вывод результатов

cout<<" Сумма данного ряда при x = "<<x<<", c точностью 0.0001, S = "<< summa<<endl;

cout<<" Значение контрольной функции, у = "<<y;

_getch();

return 0;

}