отчет 1 семестр практика 3 13 вариант
.docxБалтийский государственный технический университет «ВОЕНМЕХ» им. Д. Ф. Устинова
Кафедра И5 «Информационные системы и программная инженерия»
Практическая работа №3 по дисциплине «Информатика: Основы программирования» на тему «Циклы»
Вариант №13
Выполнил: Студент Тананыкина Надежда Андреевна Группа О401Б Преподаватель: Лазарева Татьяна Ильинична
Санкт-Петербург 2020 г.
Задача 1
Условие задачи:
Для натурального числа n получить все его натуральные нечетные делители.
Исходные данные:
Натуральные число, обозначим n, тип int.
Результирующие данные:
Натуральные нечетные делители.
Структурная схема программы:
Текст программы:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, i;
scanf_s("%d", &n);
for (i = 1; i <= n; i += 2)
if (n % i == 0)
printf("%d\t", i);
}
Таблица тестирования программы:
Входные данные |
Ожидаемый результат |
Результат программы |
3 |
1 3 |
1 3 |
6 |
1 3 |
1 3 |
17 |
1 17 |
1 17 |
Вывод:
Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.
Задача 2
Условие задачи:
Определить наибольшее число, факториал которого не превышает 105.
Исходные данные:
Числовая константа 105.
Результирующие данные:
Искомое число, обозначим fac, тип int.
Структурная схема программы:
Текст программы:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int fac, i;
i = 1;
fac = 1;
while (fac < 100000)
{
fac *= i;
i++;
}
printf("%d", fac / i);
}
Результат работы программы:
Вывод:
Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.
Задача 3
Условие задачи:
Вычислить значение суммы бесконечного ряда
с заданной точностью и значение функции (для проверки)
учесть, что 0,1 ≤ x ≤ 1.
Исходные данные:
Заданная точность 10-4, обозначим eps, тип double.
Значение аргумента, обозначим х, тип double.
Результирующие данные:
Значение функции y, обозначим y, тип double, с точностью .
Значение функции f, обозначим f, тип double, с точностью .
Дополнительные переменные:
Значение прибавляемой дроби, обозначим dr, тип double.
Структурная схема программы:
Текст программы:
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int main()
{
double x, eps, y, f, dr, fac;
scanf_s("%lf", &x);
eps = 0.0001;
dr = cos(x);
f = 1 + dr;
fac = 1;
if ((x > 1) || (x < 0.1))
printf("error");
else
{
for (int i = 2; dr * dr >= eps * eps; i++)
{
fac *= i;
dr = cos(i * x) / fac;
f += dr;
}
y = exp(cos(x)) * cos(sin(x));
printf("\ny = %.4lf\nf = %.4lf", y, f);
}
}
Таблица тестирования программы:
Входные данные |
Ожидаемый результат |
Результат программы |
0.3 |
y = 2.4869 f = 2.4869 |
y = 2.4869 f = 2.4869 |
0.6 |
y = 1.9283 f = 1.9283 |
y = 1.9283 f = 1.9283 |
6 |
error |
error |
Вывод:
Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.
Задача 4
Условие задачи:
Дано натуральное число n. Вычислить S=1+22+33+…+nn Формулу возведения в степень не использовать.
Исходные данные:
Натуральное число, обозначим n, тип int.
Результирующие данные:
Значение функции, обозначим s, тип int.
Дополнительные переменные:
Слагаемое, обозначим sl, тип int
Структурная схема программы:
Текст программы:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int s, i, j, n, sl;
scanf_s("%d", &n);
s = 0;
sl = 1;
for (i = 1; i <= n; i++)
{
sl = i;
for (j = 1; j < i; j++)
sl *= i;
s += sl;
}
printf("%d", s);
}
Таблица тестирования программы:
Входные данные |
Ожидаемый результат |
Результат программы |
2 |
5 |
5 |
3 |
32 |
32 |
5 |
3413 |
3413 |
Вывод:
Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.