Составим программу для вычисления и вывода на печать с помощью цикла do while таблицы значений функции с условием
y(х) =
если х изменяется от xn = 2.0 до xk = 5.0 с шагом h=0.5:
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{ double xn = 2.0, xk = 5.0, x, y, h = 0.5;
const double X _ end = xk + h/2; //чтобы не делать проверку в цикле
// на точное равенство с xk
//////////////////////////////////////////////////////////////////////
printf("\ndo -while:\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);
x = xn;
Do
{
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);
x += h;
} while (x < X_end);
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, вывод в стиле С
Составим программу для вычисления и вывода на печать с помощью цикла for таблицы значений функции с условием
y(х) =
если х изменяется от xn = 2.0 до xk = 5.0 с шагом h=0.5.
!!! Обратить внимание на 2 способа организации цикла в программе.
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
double xn = 2.0, xk = 5.0, x, y, h = 0.5;
const double X_end = xn+h/2;
//////////////////////////////////////////////////////////////////////
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 = xn; 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((xk-xn)/h)+1; //или floor ((xk-xn)/h)+1;
// k – счетчик количества выполнений цикла
x=xn;
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│
└────┴─────────┘
-----------------------------------------------------------------------------------------
Вычисление значения многочлена (задание 3.3)
Вычисление значения многочлена в точке
Вычисление значения многочлена в точке – это пример цикла с параметром (известна степень многочлена). Рассматриваемый алгоритм вычисления в точке значения многочлена предполагает суммирование слагаемых справа налево. Возведение в степень коэффициента и переменной в каждом отдельном слагаемом реализуется (без использования функции pow()) умножением значения предыдущего слагаемого на некоторый найденный множитель.
![]() | |||
![]() |
В примере, очевидно, что переменная домножается на себя, а коэффициент – на 2. Степень многочлена выступает как предельное значение параметра цикла.
#include <math.h>
#include <iostream>
Using namespace std;
const int n = 5; //степень многочлена
int main ()
{
double x; // точка, в которой надо вычислить значение многочлена
cout << "x= ";
cin >> x;
double xpow = 1.0; //переменная для вычисления значения х в текущей степени, сначала х0=1
int koef = 1; //переменная для вычисления текущего значения коэффициента, сначала 20=1
double result = 1.0; //переменная для значения многочлена (суммы слагаемых), сначала =1
for (int i = 1; i <= n; i++)
{ xpow *= x;
koef *= 2; // или сдвигом koef <<= 1!!!
result += koef * xpow;
}
cout << result << endl;
system("pause");
return 0;
}