Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

отчет 1 семестр практика 3 12 вариант

.docx
Скачиваний:
12
Добавлен:
06.07.2021
Размер:
22.89 Кб
Скачать

Балтийский государственный технический университет «ВОЕНМЕХ» им. Д. Ф. Устинова

Кафедра И5 «Информационные системы и программная инженерия»

Практическая работа №3 по дисциплине «Информатика: Основы программирования» на тему «Циклы»

Вариант №12

Выполнил: Студент Солярская Олеся Сергеевна Группа О401Б Преподаватель: Лазарева Татьяна Ильинична

Санкт-Петербург 2020 г.

Задача 1

Условие задачи:

Вычислить и вывести n членов арифметической прогрессии с

первым членом а и разностью прогрессии р. Определить их произведение.

Исходные данные:

Количество членов арифметической прогрессии, обозначим n, тип int.

Первый член арифметической прогрессии, обозначим a, тип double.

Разность арифметической прогрессии, обозначим p, тип double.

Результирующие данные:

Члены арифметической прогрессии.

Произведение членов арифметической прогрессии, обозначим pr, тип double.

Структурная схема программы:

Текст программы:

#include <stdio.h>

#include <stdlib.h>

int main()

{

int n, i;

double a, p, pr;

scanf_s("%d %lf %lf", &n, &a, &p);

pr = 1;

printf("%lf\t", a);

for (i = 1; i < n; i++)

{

a += p;

pr *= a;

printf("%lf\t", a);

}

printf("\nproizvedenie = %lf", pr);

return 0;

}

Таблица тестирования программы:

Входные данные

Ожидаемый результат

Результат программы

n = 6, a = 1, p = 1

1.000000 2.000000 3.000000 4.000000 5.000000 6.000000

proizvedenie = 720.000000

1.000000 2.000000 3.000000 4.000000 5.000000 6.000000

proizvedenie = 720.000000

n = 3, a = 3, p = 3.3

3.000000 6.300000 9.600000

proizvedenie = 60.480000

3.000000 6.300000 9.600000

proizvedenie = 60.480000

n = 4, a = 6, p = 12

6.000000 18.000000 30.000000 42.000000

proizvedenie = 22680.000000

6.000000 18.000000 30.000000 42.000000

proizvedenie = 22680.000000

Вывод:

Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.

Задача 2

Условие задачи:

Дано действительное а. Вычислить

Исходные данные:

Вещественное число, обозначим ф

Результирующие данные:

Искомое число, обозначим i, тип int.

Дополнительные переменные:

Факториал при значении счетчика, обозначим x, тип int.

Структурная схема программы:

Текст программы:

#include <stdio.h>

#include <stdlib.h>

int main()

{

double a, f;

int i, a2;

scanf_s("%lf", &a);

f = 1;

i = 0;

while (i < 14)

{

i += 2;

f *= (a - i) / (a - i + 1);

}

a2 = a;

if ((a <= 14) && (a2 % 2 != 0) && (a > 0))

printf("value infinity\n");

else

printf("value %lf\n", f);

}

Таблица тестирования программы:

Входные данные

Ожидаемый результат

Результат программы

a = 15

value 0.209473

value 0.209473

a = 3

value infinity

value infinity

a = 6

value 0.000000

value 0.000000

Вывод:

Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.

Задача 3

Условие задачи:

Вычислить значение суммы бесконечного ряда

с заданной точностью и значение функции (для проверки)

учесть, что 0,1 ≤ x ≤ 0,8.

Исходные данные:

Заданная точность 10-4, обозначим eps, тип double.

Значение аргумента, обозначим x, тип double.

Результирующие данные:

Значение функции y, обозначим y, тип double, с точностью .

Значение функции f, обозначим f, тип double, с точностью .

Дополнительные переменные:

Значение прибавляемой дроби, обозначим dr, тип double

Структурная схема программы:

Текст программы: #include <stdio.h>

#include <stdlib.h>

#include <math.h>

int main()

{

double eps, y, f, x, dr;

int i;

eps = 0.0001;

scanf_s("%lf", &x);

f = 0;

dr = x * cos(3.141592653 / 3);

y = -0.5 * log(1 - 2 * x * cos(3.141592653589793238463 / 3) + x * x);

if ((x < 0.1) || (x > 0.8))

printf("no value exists");

else

{

for (i = 1; fabs(dr) >= eps; i++)

{

dr = (pow(x, i) * cos(i * (3.141592653589793238463 / 3))) / i;

f += dr;

}

printf("f = %.4lf\ny = %.4lf\n", f, y);

}

}

Таблица тестирования программы:

Входные данные

Ожидаемый результат

Результат программы

x = 0.5

f = 0.1438

y = 0.1438

f = 0.1438

y = 0.1438

x = 0.9

no value exists

no value exists

x = 0.2

f = 0.0872

y = 0.0872

f = 0.0872

y = 0.0872

Вывод:

Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.

Задача 4

Условие задачи:

Дано положительное число с. Для каждого значения x = 2, 3, 4, … ,7 найти такое наибольшее число k, при котором xk не превышает заданное с.

Исходные данные:

Заданные натуральные числа {2, 3, 4, 5, 6, 7}, обозначим x, тип int.

Положительное число, обозначим с, тип double.

Результирующие данные:

Наибольшее число k, при котором xk не превышает заданное с, обозначим k, тип int.

Дополнительные переменные:

Значение xk, обозначим num, тип double.

Структурная схема программы:

Текст программы:

#include <stdio.h>

#include <stdlib.h>

int main()

{

int x, k, i;

double c, num;

scanf_s("%lf", &c);

for (x = 2; x <= 7; x++)

{

num = x;

for (k = 0; num <= c; k++)

num *= x;

printf("maximum degree %d = %d\n", x, k);

}

}

Таблица тестирования программы:

Входные данные

Ожидаемый результат

Результат программы

c = 5

maximum degree 2 = 2

maximum degree 3 = 1

maximum degree 4 = 1

maximum degree 5 = 1

maximum degree 6 = 0

maximum degree 7 = 0

maximum degree 2 = 2

maximum degree 3 = 1

maximum degree 4 = 1

maximum degree 5 = 1

maximum degree 6 = 0

maximum degree 7 = 0

c = 50

maximum degree 2 = 5

maximum degree 3 = 3

maximum degree 4 = 2

maximum degree 5 = 2

maximum degree 6 = 2

maximum degree 7 = 2

maximum degree 2 = 5

maximum degree 3 = 3

maximum degree 4 = 2

maximum degree 5 = 2

maximum degree 6 = 2

maximum degree 7 = 2

c = 216

maximum degree 2 = 7

maximum degree 3 = 4

maximum degree 4 = 3

maximum degree 5 = 3

maximum degree 6 = 3

maximum degree 7 = 2

maximum degree 2 = 7

maximum degree 3 = 4

maximum degree 4 = 3

maximum degree 5 = 3

maximum degree 6 = 3

maximum degree 7 = 2

Вывод:

Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.