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

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

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

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

Кафедра И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

Вывод:

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