Вы находитесь на странице: 1из 6

Пурымова Татьяна Лабораторная работа №2 Пи-2-23

1. В чем заключаются основные свойства алгоритма? Основные свойства алгоритмов это: 1.


понятность для исполнителя, 2. детерминированность, 3. дискретность, 4. конечность, 5.
массовость.

2. Каковы основные принципы разработки алгоритмов?

1.постановка задачи; 2.формализация или математическая постановка задачи; 3.выбор или


разработка метода решения задачи; 4.разработка алгоритма или алгоритмизация; 5.составление
программы или этап непосредственного программирования; 6.отладка программы; 7.вычисление
и обработка результатов.

3. Чем объясняется разнообразие форм записи алгоритмов? Существуют множество различных


форм записи алгоритмов. Это связано с тем, что каждый исполнитель алгоритмов "понимает"
лишь такой алгоритм, который записан на его "языке" и по его правилам.

4. Охарактеризуйте словесно-пошаговый способ записи алгоритмов. Словесный способ записи


алгоритмов представляет собой описание последовательных этапов обработки данных. Алгоритм
задается в произвольном изложении на естественном языке.

5. Каков порядок составления блок-схем?

1.блок начала алгоритма 2.блок ввода исходных данных 3.блок выполнения вычислений 4.блок
условия 5.блок вывода результата 6.блок конца алгоритма

6. Что является выходом алгоритма? Выходом алгоритма является результат или конечное
состояние, которое достигается после выполнения всех шагов алгоритма.

7. Что должен делать алгоритм после выполнения всех этапов? После завершения всех этапов
алгоритм должен вывести данные на экран и завершить свою работу

8. Что означает детерминированность алгоритма? Детерминированность означает, что любое


действие должно быть строго и недвусмысленно определено в каждом случае

9. Какие формы алгоритмов ветвления различают?

Условное ветвление (if-else) : Выполняет определенный блок кода в зависимости от условия


истинности.

Множественное ветвление (switch-case) : Выбирает один из нескольких вариантов выполнения


кода в зависимости от значения переменной.

10.Чем обусловлены различные формы алгоритмов ветвления? Если условия разветвления


достаточно просты, то можно использовать условное ветвление (if-else). Если же условий много и
они дискретны, то множественное ветвление (switch-case) может быть более удобным. В
некоторых случаях одна форма ветвления может делать код более читаемым и понятным, что
упрощает его поддержку и развитие. Привычность разработчика: Разработчики могут
предпочитать определенную форму ветвления из-за своего опыта или предпочтений.

11.Для чего необходимо ветвление в алгоритмах? Ветвление в алгоритмах необходимо для


принятия решений и выполнения различных действий в зависимости от условий.

1. Даны числа a, b, c. Если a ≤ b ≤ c, то все числа заменить их квадратами, если a>b>c, то каждое
число заменить наибольшим из них.
Аналитическое решение задачи №1:

1. Если a ≤ b ≤ c, то все переменные нужно заменить их квадратами. Это означает, что мы можем
просто возвести переменную в квадрат, чтобы получить результат.

2. Если a > b > c, то каждую переменную нужно заменить наибольшим из них. В этом случае мы
можем использовать функцию max и заменить каждую переменную на это максимальное
значение.

Типы данных: а, b, c- вещественные чтобы пользователь мог вводить числа с точкой.

#include <iostream>
#include<math.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "RU");
float a, b, c;
cout << "Введите числа а, b, c";
cin >> a >> b >> c;
if (a <= b && b <= c) {
a *= a;
b *= b;
c *= c;
}
else{
int max_num = max({ a, b, c });
a = max_num;
b = max_num;
c = max_num;
}
cout << "a=" << a << ", b=" << b << ",c =" << c;
system("pause");
return 0;
}

2. Если сумма трех попарно различных действительных чисел x, y, z меньше единицы, то


наименьшее из этих чисел заменить полусуммой двух других; в противном случае заменить
меньшее из х и у суммой двух оставшихся значений.
Аналитическое решение задачи №2:

1. если сумма x + y + z < 1, наименьшее из x, y, z нужно заменить на полусумму двух других


переменных, для этого мы их сложим и разделим на 2

2. если сумма x + y + z ≥ 1. Нужно найти минимальное из x и y, и заменить суммой двух оставшихся


значений.

Типы данных: x, y, z – по условию задачи это действительные числа в маленьком диапазоне


поэтому-(float)

#include <iostream>
#include<math.h>
using namespace std;

int main()
{
setlocale(LC_ALL, "RU");
cout << "Введите x, y, z\n ";
float x, y, z ;
cin >> x >> y >> z;
if (x + y + z < 1) {
if (x <= y && x <= z) {
x = (y + z) / 2;
}
else if (y <= x && y <= z) {
y = (x + z) / 2;
}
else {
z = (x + y) / 2;
}
}
else {
if (x <= y) {
x = y + z;
}
else {
y = x + z;
}
}
cout << "Новые значения чисел: x = " << x << ", y = " << y << ", z = " << z << std::endl;

return 0;
}

3. Даны числа k, l, n, m. выяснить, является ли k делителем всех чисел.


Аналитическое решение задачи №3:

Для того чтобы выяснить, является ли число k делителем всех чисел l, n, m, необходимо проверить,
что остаток от деления каждого из чисел l, n, m на k равен нулю.

Типы данных: k, n, m, l- целое(int)

#include <iostream>
#include<math.h>
using namespace std;

int main() {
setlocale(LC_ALL, "RU");
int k, l, n, m;
cout << "Введите число k (делитель): ";
cin >> k;
cout << "Введите числа l, n, m (делимое): ";
cin >> l >> n >> m;
if (l % k == 0 && n % k == 0 && m % k == 0) {
cout << k << " является делителем всех чисел " << l << ", " << n << ", " <<
m << std::endl;
}
else {
cout << k << " не является делителем всех чисел " << l << ", " << n << ", "
<< m << std::endl;
}

return 0;
}
4. Задано трехзначное число K. Выяснить, образуют ли цифры этого числа арифметическую
прогрессию.

Аналитическое решение задачи №4:

Для того чтобы выяснить, образуют ли цифры трехзначного числа арифметическую прогрессию,
нужно разложить это число на цифры и проверить выполнение условия арифметической
прогрессии. Трехзначное число K записано в виде a1, а2, а3 где a1, а2, а3 - цифры числа. Чтобы
проверить, образуют ли цифры числа арифметическую прогрессию, нужно использовать формулу

2 * a2 == a1+ a3, если условие выполняется, то это арифметическая прогрессия.


Типы данных а1, а2, а3, k-целое(int) т.к. по условию задачи это трехзначное число, и его
составляющие

#include <iostream>
#include<math.h>
using namespace std;
int main() {
setlocale(LC_ALL, "RU");
int K;
cout << "Введите трехзначное число K: ";
cin >> K;
int a1, a2, a3;
a1 = K / 100;
a2 = (K / 10) % 10;
a3 = K % 10;
if (2 * a2 == a1+ a3) {
cout << "Цифры числа K образуют арифметическую прогрессию." << std::endl;
}
else {
cout << "Цифры числа K не образуют арифметическую прогрессию." << std::endl;
}

return 0;
}
Аналитическое решение задачи срс №6:

Необходимо найти F(x) в 3х случаях:


1)F=0 при x<=0
2)F=x^2-x при 0<x<=1
3)F=x^2-sin Px^2 в остальных случаях, у нас есть готовые формулы, нужно только чтобы
пользователь ввел х.
Типы данных: х, pi, f-вещественное(float)
#include <iostream>
#include<math.h>
using namespace std;

int main()
{
setlocale(LC_ALL, "RU");
float x, f, pi = 3.14;
cout << "Введите х\n";
cin>>x;
if (x <= 0){
cout << "f(x)=0\n";
}
else if (x < 0 && x <= 1) {
f = x * x - x;
cout << "f(x)=" << f<<endl;
}
else {
f = x * x- sin(pi * x * x);
cout << "f(x)=" << f << endl;
}
system("pause");
return 0;
}

Вам также может понравиться