- •Лабораторная работа 2 Циклы
- •Организация циклов с параметром Цикл while в циклах с параметром Вычисление суммы чисел натурального ряда от 1 до 10
- •Определение наибольшей степени целого числа 100, которую можно вычислить, пользуясь типом long
- •Подсчет количества цифр в числе n
- •Вычисление значений функции на отрезке
- •Вычисление на отрезке значений функции с условием и оформление результатов
- •Цикл do-while в циклах с параметром Вычисление суммы чисел натурального ряда от 1 до 10
- •Калькулятор
- •Проверка входных данных
- •Вычисление значений функции на отрезке
- •Вычисление на отрезке значений функции с условием и оформление результатов
- •Цикл for в циклах с параметром Вычисление суммы чисел натурального ряда от 1 до 10
- •Вычисление на отрезке значений функции с условием и оформление результатов
- •Организация итерационных циклов Цикл while в итерационных циклах Вычисление числа π
- •Вложенные циклы
- •Вычисление значения многочлена на отрезке (схема Горнера)
- •Разложение функции на отрезке в ряд Тейлора
- •Организация работы с последовательностью чисел, вводимых с клавиатуры
- •Корректная организация циклов
- •Оптимизация программы
- •Алгоритм типа «развилка, вложенная в цикл с параметром»
- •Алгоритмы итерационных циклов Пример 1. Нахождение корня нелинейного уравнения методом итераций
- •Пример 2. Нахождение корня нелинейного уравнения методом половинного деления
- •Пример 3. Вычисление суммы членов бесконечного ряда.
- •Алгоритмы с вложенными циклами
- •Алгоритм вложенного цикла с развилкой
Вычисление на отрезке значений функции с условием и оформление результатов
Составим программу для вычисления и вывода на печать таблицы значений функции с условием у(х), если х изменяется от x0=2.0 до xn=5.0 с шагом h=0.5 с помощью цикла for:
#include <math.h>
int main()
{
double x0 = 2.0, xn = 5.0, x, y, h = 0.5;
const double X_end = xn+h/2 ; //5.0 +h/2, чтобы попала точка 5.0
//////////////////////////////////////////////////////////////////////
printf("\nfor_1:\n");
printf ("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n",
218,196,196,196,196,194,196,196,196,196,196,196,196,196,196,191);
printf ("%c x %c y %c\n",179, 179, 179);
for (x=x0; x< X_end; x+=h)
{ if (x<=3.5) y=cos(x);
else y=sin(x);
printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n",
195,196,196,196,196,197,196,196,196,196,196,196,196,196,196,180);
printf("%c%4.2lf%c%9.5lf%c\n",179, x, 179, y, 179);
}
printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n",
192,196,196,196,196,193,196,196,196,196,196,196,196,196,196,217);
//////////////////////////////////////////////////////////////////////
printf("\nfor_2:\n");
const int k = int((xn-x0)/h)+1; //или floor ((xn-x0)/h)+1;
//k – счетчик количества выполнений цикла
x=x0;
printf ("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n",
218,196,196,196,196,194,196,196,196,196,196,196,196,196,196,191);
printf ("%c x %c y %c\n",179, 179, 179);
for (int i=1; i<=k; x+=h, i++)
{ if (x<=3.5) y=cos(x);
else y=sin(x);
printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n",
195,196,196,196,196,197,196,196,196,196,196,196,196,196,196,180);
printf("%c%4.2lf%c%9.5lf%c\n",179, x, 179, y, 179);
}
printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n",
192,196,196,196,196,193,196,196,196,196,196,196,196,196,196,217);
_getch();
return 0;
}
Результаты работы программы:
for_1:
┌────┬─────────┐
│ x │ y │
├────┼─────────┤
│2.00│ -0.41615│
├────┼─────────┤
│2.50│ -0.80114│
├────┼─────────┤
│3.00│ -0.98999│
├────┼─────────┤
│3.50│ -0.93646│
├────┼─────────┤
│4.00│ -0.75680│
├────┼─────────┤
│4.50│ -0.97753│
├────┼─────────┤
│5.00│ -0.95892│
└────┴─────────┘
for_2:
┌────┬─────────┐
│ x │ y │
├────┼─────────┤
│2.00│ -0.41615│
├────┼─────────┤
│2.50│ -0.80114│
├────┼─────────┤
│3.00│ -0.98999│
├────┼─────────┤
│3.50│ -0.93646│
├────┼─────────┤
│4.00│ -0.75680│
├────┼─────────┤
│4.50│ -0.97753│
├────┼─────────┤
│5.00│ -0.95892│
└────┴─────────┘
Организация итерационных циклов Цикл while в итерационных циклах Вычисление числа π
//сумма ряда 1-1/3+1/5-1/7+1/9-…. равна π/4
#include <iomanip>
int main ()
{
int i=1;
double x=1.0, sum=0.0, e=0.0000001;
while (fabs(x)> e)
{
x= 1.0/(2*i-1);
if ((i%2)==0) x = -1*x;
sum +=x;
i++;
}
cout <<setiosflags(ios::fixed)<<setprecision(7);
cout << "summa:" << setw(11) <<sum << endl;
cout << endl;
cout << "PI:" << setw(11) << sum*4 << endl;
cout << "exit - <enter>" << endl;
_getch();
return 0;
}
где:
setw(n) - значение n задает минимальную ширину поля вывода;
setprecision(m) - значение m задает точность представления вещественных чисел (максимальное количество цифр дробной части при вводе и выводе);
setiosflags(ios::fixed) – устанавливает форматный флаг потока ввода-вывода для представления вещественных чисел в формате с фиксированной точкой; в отличие от него, setiosflags(ios::scientific) – устанавливает форматный флаг потока ввода-вывода для представления вещественных чисел в формате с мантиссой и порядком;