Файл: Отчет по лабораторной работе 2 Вариант 27 по дисциплине программирования.docx
Добавлен: 29.04.2024
Просмотров: 13
Скачиваний: 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. Условие задачи
-
Текст является десятичной записью числа, кратного 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;
}