отчет 1 семестр практика 3 16 вариант
.docxБалтийский государственный технический университет «ВОЕНМЕХ» им. Д. Ф. Устинова
Кафедра И5 «Информационные системы и программная инженерия»
Практическая работа №3 по дисциплине «Информатика: Основы программирования» на тему «Циклы»
Вариант №16
Выполнил: Студент Эрмекбаев Рустам Хурваевич Группа О401Б Преподаватель: Лазарева Татьяна Ильинична
Санкт-Петербург 2020 г.
Задача 1
Условие задачи:
Последовательно вводятся n натуральных чисел. Вычислить произведение чётных чисел
Исходные данные:
Количество вводимых чисел, обозначим n, тип int.
Последовательность из n натуральных чисел, обозначим каждый элемент znch, тип int.
Результирующие данные:
Произведение четных чисел, обозначим pr, тип int.
Дополнительные переменные:
Отсутствуют.
Структурная схема программы:
Текст программы:
#include <stdio.h>
#include<stdlib.h>
int main()
{
int i, n, znch, pr;
scanf_s("%d", &n);
pr = 1;
for (i = 0; i < n; i++)
{
scanf_s("%d", &znch);
if (znch % 2 == 0)
pr *= znch;
}
if (pr == 1)
printf("no values\n");
else
printf("%d", pr);
return 0;
}
Таблица тестирования программы:
Входные данные |
Ожидаемый результат |
Результат программы |
n = 6 1 1 1 1 1 1 |
no values |
no values |
n = 3 2 6 4 |
48 |
48 |
n = 4 1 2 3 5 |
2 |
2 |
Вывод:
Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.
Задача 2
Условие задачи:
Найти число Фибоначчи, ближайшее к заданному натуральному числу n.
Исходные данные:
Натуральное число, обозначим n, тип int.
Результирующие данные:
Число Фибоначчи, ближайшее к заданному натуральному числу n, обозначим num, тип int.
Дополнительные переменные:
Предыдущее число 1, обозначим num1, тип int.
Предыдущее число 2, обозначим num2, тип int.
Структурная схема программы:
Текст программы:
#include <stdio.h>
#include<stdlib.h>
int main()
{
int n, num, num1, num2;
scanf_s("%d", &n);
num1 = 0;
num2 = 1;
num = 0;
while (num < n)
{
num = num1 + num2;
num1 = num2;
num2 = num;
}
if (num - n <= n - num1)
printf("%d\n", num);
else
printf("%d\n", num1);
return 0;
}
Таблица тестирования программы:
Входные данные |
Ожидаемый результат |
Результат программы |
89 |
89 |
89 |
9 |
8 |
8 |
18 |
21 |
21 |
Вывод:
Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.
Задача 3
Условие задачи:
Вычислить значение суммы бесконечного ряда с заданной точностью и значение функции (для проверки) , учесть, что x2 < 1.
Исходные данные:
Заданная точность 10-5, обозначим eps, тип double.
Значение аргумента, обозначим x, тип double.
Результирующие данные:
Значение функции y, обозначим y, тип double, с точностью .
Значение функции f, обозначим f, тип double, с точностью .
Дополнительные переменные:
Значение прибавляемой дроби, обозначим dr, тип double.
Структурная схема программы:
Текст программы:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
double y, f, x, dr, eps;
int i = 0;
scanf_s("%lf", &x);
if (x * x < 1)
{
dr = 1;
eps = 0.00001;
f = 1;
while (fabs(dr) >= eps)
{
i++;
dr *= -(i * 2.0 - 1) / (i * 2.0) * x;
f += dr;
}
y = 1 / sqrt(1 + x);
printf("y = %.5lf\nf = %.5lf\n", y, f);
}
else
printf("no values\n");
return 0;
}
Таблица тестирования программы:
Входные данные |
Ожидаемый результат |
Результат программы |
1 |
no values |
no values |
0.5 |
y = 0.81650 f = 0.81650 |
y = 0.81650 f = 0.81650 |
0.1 |
y = 0.95346 f = 0.95346 |
y = 0.95346 f = 0.95346 |
Вывод:
Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.
Задача 4
Условие задачи:
Последовательность а1, а2, а3, … образована по закону
, i = 2, 3, … Найти первый отрицательный член последовательности для различных b = 3, 4, 5, 6, 7, 8, 9.
Исходные данные:
Различные значения b {3, 4, 5, 6, 7, 8, 9}, обозначим x, тип int.
Результирующие данные:
Первый отрицательный член последовательности, обозначим ai, тип double.
Структурная схема программы:
Текст программы:
nclude<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int b, i;
double ai;
for (b = 3; b < 10; b++)
{
ai = b;
for (i = 2; ai > 0; i++)
ai -= 1 / sqrt(i);
printf("First negative number %lf for b = %d\n", ai, b);
}
return 0;
}
Результат тестирования программы:
Вывод:
Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.