отчет 1 семестр практика 3 5 вариант
.docxБалтийский государственный технический университет «ВОЕНМЕХ» им. Д. Ф. Устинова
Кафедра И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 |
Вывод:
Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.