Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТТП (методичка).doc
Скачиваний:
3
Добавлен:
10.11.2018
Размер:
2.24 Mб
Скачать
    1. Лабораторная работа №6

Целью работы является освоение программирования алгоритмов с циклической структурой и выхода из цикла по условию, не зависящему от количества циклов. Примером такой задачи является вычисление суммы с бесконечным верхним пределом.

Порядок выполнения работы:

  • изучить операторы цикла while и do while (параграф 13.2);

  • определить формулу для вычисления выражения под знаком суммы;

  • разработать блок-схему;

  • составить текст программы на языке Cи;

  • проверить правильность выполнения разработанной программы;

  • составить отчет.

Проверка цикла осуществляется следующим образом. Так как выражение под знаком суммы постепенно убывает с ростом слагаемых в сумме, то наступает момент, когда очередное слагаемое станет меньше некоторого заранее заданного числа (грубо говоря, точности вычисления сумм), и остальные слагаемые будут мало влиять на конечный результат. Поэтому, когда выражение под знаком суммы будет меньше , то вычисления прекращаются и предполагается, что сумма найдена с заданной точностью.

В языке Си для циклов с заранее неизвестным числом повторений обычно используются операторы while или do while.

При вычислении суммы должен вычисляться факториал по формуле:

,

где — знак произведения, например . Факториал 0 равен 1.

В программе факториал можно вычислить отдельным циклом, а можно и непосредственно в цикле вычисления суммы, воспользовавшись итерационным выражением . Для этого вводится дополнительная переменная, например , и затем в каждом цикле домножается на текущее значение индекса суммы .

Кроме значения суммы на печать полезно вывести значение счетчика циклов, то есть узнать, из скольких слагаемых состоит сумма.

Примечание. В языке Си под переменные типа int выделяется два байта и допустимые для них значения находятся в диапазоне только от –32 768 до 32 767. Поэтому число 10!, реально равное 3 628 800, в этом случае из-за переполнения будет представлено в памяти компьютера как 24 320. Таким образом, выражение под знаком суммы может никогда и не стать меньше заданной точности. Для работы с большими числами рекомендуется использовать вещественные типы float с диапазоном представления от 8,410-37 до 3,410+38 и double с диапазоном от 2,210-308 до 1,910+308 или целый тип long с диапазоном значении от –2 147 483 648 до 2 147 483 647.

Пример. Вычислить , при с точностью до .

Листинг 20 — Лабораторная работа №6

/* lab6.c - лабораторная работа №6. */

#include <stdio.h>

#include <conio.h>

#include <math.h>

#define e 1e-3 /* точность */

void main()

{

double s = 0, s_k; /* для вычисления суммы */

const double x = 0.81;

double fact = 1; /* для вычисления факториала */

int k = 1;

clrscr();

/* заголовок таблицы */

printf(“------------------------------\n”);

printf(“| Шаг | Факториал | Значение |\n”);

printf(“------------------------------\n”);

/* вычисление суммы при помощи цикла do-while */

do {

fact *= k;

s_k = (k + x) / fact * exp(x / k);

printf(“| %3d | %9.0f | %8.4f |\n”, k, fact, s_k);

s += s_k;

k++;

} while (fabs(s_k) > e);

printf(“------------------------------\n”);

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

printf(“Значение суммы: %f”, s);

}

Рисунок 54 — Результат выполнения lab6.c

Таблица 11 — Варианты заданий к лабораторной работе №6

№ вар.

Вычислить

При , равном

Точность вычислений

1

0,149

10 -5

2

5,99

10 -3

3

3,1

10 -4

4

1,91

10 -5

5

1,42

10 -3

6

0,99

10 -4

7

1,51

10 -5

8

3,48

10 -3

9

7,55

10 -4

10

2,15

10 -5