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

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

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

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

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

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

Вариант №5

Выполнил: Студент Кострик Иван Александрович Группа О401Б Преподаватель: Ирина Владимировна Мартынова

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

Задача 1

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

Вычислить a(a-n)(a-2n)…(a-n2). Вещественное а и целое n вводится с

клавиатуры.

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

Вещественное число, обозначим a, тип double.

Целое число, обозначим n, тип int.

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

Значение выражения, обозначим f, тип double.

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

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

#include <stdio.h>

#include <stdlib.h>

int main()

{

int n, i;

double a, f;

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

f = a;

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

f *= a - i * n;

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

return 0;

}

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

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

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

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

a = 3; n = 2

-3.000000

-3.000000

a = 2.5 ; n = 4

2645.156250

2645.156250

a = 1; n = 1

0.000000

0.000000

Вывод:

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

Задача 2

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

Вычислить за сколько лет в банке Сибнефть при начальном вкладе

W и процентах годового прироста Pr будет накоплена сумма Sum.

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

Начальная сумма вклада, обозначим w, тип double.

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

Накопленная сумма, обозначим sum, тип double.

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

Целое количество лет для накопления суммы, обозначим year, тип int.

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

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

#include <stdio.h>

#include <stdlib.h>

int main()

{

int year;

double w, pr, sum;

scanf_s("%lf %lf %lf", &w, &pr, &sum);

year = 0;

while (w < sum)

{

year++;

w += w * pr * 0.01;

}

printf("number of years %d\n", year);

return 0;

}

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

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

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

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

w = 30000; pr = 10;

sum = 36300

number of years 2

number of years 2

w = 6000 ; pr = 5;

sum = 300

number of years 0

number of years 0

w =10000 ; pr = 20;

sum = 17000

number of years 3

number of years 3

Вывод:

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

Задача 3

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

Вычислить значение суммы бесконечного ряда с заданной точностью , и значение функции для проверки

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

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

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

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

Значение бесконечной суммы, обозначим sum, тип double.

Значение функции для проверки, обозначим f, тип double.

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

Факториал числа i, обозначим factorial, тип double.

Прибавляемая дробь, обозначим dr, тип double.

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

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

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

int main()

{

double eps, sum, f, dr, x, factorial;

eps = 0.001;

scanf_s("%lf", &x);

f = (exp(x) - exp(-x)) / 2;

sum = 0;

dr = x;

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

{

factorial = 1;

for (int j = 1; j <= i; j++)

factorial *= j;

dr = pow(x, i) / factorial;

sum += dr;

}

printf("f = %.3lf\nsum = %.3lf\n", f, sum);

return 0;

}

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

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

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

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

x = 2

f = 3.627

sum = 3.627

f = 3.627

sum = 3.627

x = 5

f = 74.203

sum = 74.203

f = 74.203

sum = 74.203

x = 7

f = 548.316

sum = 548.316

f = 548.316

sum = 548.316

Вывод:

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

Задача 4

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

Последовательно вводятся n натуральных чисел (n <=10).

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

последней.

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

Количество натуральных чисел, обозначим n, тип int.

Натуральные числа, обозначим x, тип int.

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

Сумма чисел, у которых первая и последняя цифра одинакова, обозначим sum, тип int.

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

Первая цифра числа, обозначим numf, тип int.

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

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

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

int main()

{

int n, x, sum, i, num, numf;

scanf_s("%d", &n);

sum = 0;

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

{

scanf_s("%d", &x);

num = x;

while (num > 0)

{

numf = num % 10;

num /= 10;

}

if (numf == (x % 10))

sum += x;

}

printf("sum = %d", sum);

return 0;

}

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

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

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

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

n = 3

12

222

6

sum = 228

sum = 228

n = 5

9

55

32

377

98

sum = 64

sum = 64

n = 4

12

23

34

45

sum = 0

sum = 0

Вывод:

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