Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб_2_метод_указания.doc
Скачиваний:
2
Добавлен:
09.11.2018
Размер:
412.67 Кб
Скачать

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

Составим программу для вычисления и вывода на печать таблицы значений функции с условием у(х), если х изменяется от 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) – устанавливает форматный флаг потока ввода-вывода для представления вещественных чисел в формате с мантиссой и порядком;