Файл: Отчет по лабораторной работе 2 Вариант 27 по дисциплине программирования.docx

ВУЗ: Не указан

Категория: Отчеты по практике

Дисциплина: Не указана

Добавлен: 29.04.2024

Просмотров: 14

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования

ИРКУТСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Институт/Факультет -Институт Информационных Технологий и Анализа Данных

Группа - ЭВМб-22-1

Название работы –

«Циклический вычислительный процесс»

Отчет по лабораторной работе № 2

Вариант 27

по дисциплине программирования

Выполнил

Принял

Иркутск –2022

Группа A

1. Условие задачи



2. Математическая модель

Дана формула вычисления натурального логарифма от x.

Представим в виде формулы: u = ((x - 1)n) / n) * (-1)n+1

где n увеличивается на 1 с каждой итерацией

3. Таблица 1 – Внешние спецификации



Имя

Назначение

Тип

Вх/Вых.

Диапазон

1

x

Переменная x

Вещ.

Вход

0 < x ≤ 2

2

eps

Погрешность

Вещ.

Вход

0 < eps < 1

3

n

Кол-во итераций

Цел.

Вход

(0;3.4E+38)

4

sum

Ответ ln x

Вещ.

Выход

(3.4E-38; 3.4E+38)

4. Алгоритмизация

Блок-схема алгоритма представлена на рис. 1.




Рис.1

5. Словесное описание алгоритма

1. Начало

2. Выбор задания

3. Ввод переменных

4. Вычисление суммы, формула для нахождения члена ряда

u = ((x - 1)^n) / n) * (-1)^n+1

5. Ответ в виде суммы всех членов ряда

6. Проектирование тестов

Номер теста

Назначение теста

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

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

1

Вычисление с известной погрешностью eps

X = 1.4

Eps = 0.00001

Sum = 0.336469

2

Вычисление с веденным n-повторений

X = 1.4

N = 12

Sum = 0.336469

3

По встроенной формуле

X = 1.4

Sum = 0.336472

7. Проверка правильности алгоритма с помощью таблицы

Тест 1: блоки 1,2,3,4,9

Тест 2: блоки 1,2,5,6,9

Тест 3: блоки 1,2,7,8,9

8. Кодирование алгоритма или запись алгоритма на языке С++

int A_1()

{

float x = 0, eps = 0, sum = 0, u = 0;

float n = 2; /*счётчик итераций цикла суммы ряда начинается с второго элемента*/
cout << "Введите x в пределах ОДЗ" << endl << "ОДЗ: 0 < x <= 2" << endl;

do

{

cin >> x;

} while (x <= 0 || x > 2);

cout << "\tВведите eps" << endl << "\t0 < eps < 1" << endl;

do

{

cin >> eps;

} while (eps >= 1 || eps <= 0);
u = (x - 1); /*т.к это первый член ряда*/
while (abs(u) > eps)

{

sum = sum + u;

u = ((pow((x - 1), n)) / n) * pow((-1), (n + 1));

n++;

}
cout << endl << "\tsum = " << sum << "\nКол-во повторений цикла = " << n << endl << endl << endl;
return 0;

}
int A_2()

{

float x = 0, sum = 0, u = 0;

float n = 2; /*счётчик итераций цикла суммы ряда начинается с второго элемента*/

int ch = 0;
cout << "Введите x в пределах ОДЗ" << endl << "ОДЗ: 0 < x <= 2" << endl;

do

{

cin >> x;

} while (x <= 0 || x > 2);
cout << "\tВведите n:";

do

{

cin >> ch;

} while (ch <= 0);
u = (x - 1); /*т.к это первый член ряда*/
while (n != ch)

{

sum = sum + u;

u = ((pow((x - 1), n)) / n) * pow((-1), (n + 1));

n++;

}
cout << endl << "\tsum = " << sum << endl << endl;
return 0;

}
int A_3()

{

float x, sum;

do

{

cout << "Введите x в пределах ОДЗ" << endl << "ОДЗ: 0 < x <= 2" << endl;



cout << "x = ";

cin >> x;

} while (x <= 0 || x > 2);

sum = log(x);

cout << endl << "\tsum = " << sum << endl << endl;

return 0;

}

Группа Б

1. Условие задачи

  1. Текст является десятичной записью числа, кратного 9;

2. Математическая модель

Если сумма чисел делится на 9 без остатка, то текст кратен 9

3. Таблица 1 – Внешние спецификации



Имя

Назначение

Тип

Вх/Вых.

Диапозон

1

symbol

Введенный символ

Символ

вход

(0;255)

2

C1

Сообщение

Текст

выход

2 вида

С1.1: “ Число кратно 9”

С1.1: “ Число не кратно 9”

4. Алгоритмизация

Блок-схема алгоритма представлена на рис. 2.



Рис. 2

5. Словесное описание алгоритма

1. Начало

2. Ввод символа

3. Проверка условий:

1. Введенный символ – enter? Если да то пункт 4 и пункт 5, если нет то пункт 3.2

2. Введенный символ цифра? Если да то цифра прибавляется к сумме и пункт 2, если нет то пункт 2.

4. Проверяем кратна ли сумма 9

Если да то вывод что число кратно

Если нет то вывод что число не кратно

5. Конец

6. Проектирование тестов

Номер теста

Назначение теста

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

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

1

Текст кратен 9

3a33

Sum = 9

Число кратно 9

2

Текст не кратен 9

w245z

Sum = 11

Число не кратно 9

7. Проверка правильности алгоритма с помощью таблицы

Тест 1: блоки 1,2,3,4,5,2,3,4,2,3,4,5,2,3,4,5,2,3,6,7,9


Тест 2: блоки 1,2,3,4,2,3,4,5,2,3,4,5,2,3,4,5,2,3,4,2,3,6,8,9

8. Кодирование алгоритма или запись алгоритма на языке С++

int B()

{

cout << "\tВведите текст\n";

cout << "\tКогда закончите нажмите - enter\n";

int symbol = _getch();

cout << char(symbol);

int sum = 0;
if (symbol >= 48 && symbol <= 57)

{

sum = (symbol - 48);

}

while (symbol != 13)

{

symbol = _getch();

cout << char(symbol);

if (symbol >= 48 && symbol <= 57)

{

sum += (symbol - 48);

}

}
if (sum % 9 == 0)

{

cout << endl << "sum = " << sum << endl;

cout << endl << "\n\tВведённое число кратно 9!\n\n";

}

else

{

cout << endl << "sum = " << sum << endl;

cout << endl << "\n\tВведённое число не кратно 9!\n\n";

}
return 0;

}

Группа В

1. Условие задачи

7. Крестьянка несла на базар яйца. Проезжавший всадник толкнул ее, и все яйца разбились. На вопрос сколько было яиц, она сказала: " Когда я раскладывала яйца по два, по три и так далее, одно оказывалось лишним. А вот когда я их разложила по N штук, остатка не оказалось." Сколько яиц было у крестьянки? (Из возможных ответов брать наименьшее). Например, при N=7, ответ равен 301.

2. Математическая модель

Найти число которое при делении на N дает остаток 0, а при делении на числа от 2 до N дает остаток 1.

3. Таблица 1 – Внешние спецификации



Имя

Назначение

Тип

Вх/Вых.

Диапозон

1

N

Разложение по N штук, без остатка

Целое

вход

(0;3.4E+38)

2

S

Яиц в корзине

Целое

выход

(0;3.4E+38)

4. Алгоритмизация

Блок-схема алгоритма представлена на рис. 3.



Рис.3

5. Словесное описание алгоритма

1. Начало.

2. Ввод N.

3. S = a * N, ch = 2.

4. Начало цикла S % ch = 1.

5. ch = ch + 1.

5. Конец цикла S % ch = 1.

6. Условие, ch % N = 0, если нет то пункт 7, если да то пункт 8.

7. a = a + 1 и пункт 3.

8. Вывод S

9. Конец

6. Проектирование тестов

Номер теста

Назначение теста

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

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

1

Проверка условия,

Если N = 7 то,

S =301

N = 7

S = 301

2

N = 5

N = 5

S = 25


7. Проверка правильности алгоритма с помощью таблицы

Тест 1: Блоки 1,2, ((3,4,5,6,7)-цикл пока a ≠ 43), 8,9

Тест 2: Блоки 1,2, ((3,4,5,6,7)-цикл пока a ≠ 5), 8,9

8. Кодирование алгоритма или запись алгоритма на языке С++

int C()

{

cout << "\tВведите число N: ";

int S;

int N;

cin >> N;

int a = 1;

int ch;

bool f = true;

while (f)

{

S = a * N;

ch = 2;

while ((S % ch) == 1)

{

ch++;

}

if (ch % N == 0) f = false;

a++;

}

cout << "\tЯиц в корзине было: " << S << endl;

return 0;

}