Циклы с заданным числом повторений

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

Типы переменных и констант в программах работы следует выбирать по содержанию задания. В алгоритме цикла и в программе нужно использовать рекуррентные формулы.

 
 

Задание: вычислить сумму членов ряда (2), n, х – заданные величины:

/* Программа 4.1. Функция факториал k! =1*2*3*…*k, 0! = 1
ТЕСТ: n = 4, x = 2.0, s = - 0.6666… */

#include <stdio.h>

void main()

{ float x, r, s;

int i, k, n;

< Вывод шапки результатов программы, см. программу 1 или 2 >

printf("\n Введите x и n: ");

scanf("%e%d", &x, &n); //С т р у к т у р а цикла:

r = 1; s = 0; // инициализация цикла – блок 1цикла

for (k = 1; k <= n; k++) // оператор управления циклом –блок 2цикла

{ // область (тело) цикла –блок 3цикла

r = -r*x / k; // член ряда и сумма вычисляются по рекуррентным

s = s + r; // формулам, в которых используются предыдущие

} // значения переменных r и s

printf("Для n = %d и х = %.4f сумма ряда s = %.4e", n, x, s);

}

/* Программа 4.2, вычисление таблицы значений функции y = exp(x/2) на интервале (a, b) с шагом h. ТЕСТ: a=0, b=2.0, h=1.0, y(0)=1, y(2)=2.718 … */

#include <stdio.h>

#include <math.h>

void main()

{ float a, b, h, x, y;

< Вывод шапки результатов программы, см. программу 1 или 2 >

printf("\n Введите a, b и h: ");

scanf("%e%e%e", &a, &b, &h);

printf("\n ТАБЛИЦА ФУНКЦИИ y = exp(x/2) \n\n");

printf(" x\t\t exp(x/2) \n" ); // столбцы таблицы

for (x = a; x <= b; x+=h)

printf("%6.3f %15.5f \n", x, exp(x/2));

} // В спецификации формата “ %6.3f ” число 6 – длина поля для вывода х

Вопросы и упражнения:

1. Какие формулы называют рекуррентными? Как изменится программа 4.1, если не использовать рекуррентные формулы?

2. Запишите рекуррентную формулу для вычисления (2k – 1)!, k = 1, 2, … .

3. Поясните спецификацию формата “ %15.5f ”.

4. На какие три группы делят операторы обработки данных с циклом?

5. Модифицируйте программу для вычисления таблицы значений двух функций: ln(x) и xb , вывод данных выполните в экспоненциальном формате.

6. Как в программе задаётся выравнивание данных по столбцам при выводе таблицы на экран?