Алгоритмы (C++)

Материал из Информационная безопасностя
Перейти к навигации Перейти к поиску

Код программ

Сумма вводимых целых чисел

 1 #include <iostream>
 2 #include <windows.h>
 3 
 4 int main() {
 5     SetConsoleOutputCP(CP_UTF8);
 6 
 7     int count;
 8     std::cout << "Введите число слагаемых:";
 9     std::cin >> count;
10 
11     int sum = 0;
12 
13     for(int i = 1; i <= count; i++) {
14         int x;
15         std::cout <<"Введите слагаемое " << i << ":";
16         std::cin >> x;
17         sum += x;
18     }
19 
20     std::cout << "Сумма равна " << sum << std::endl;
21     return 0;
22 }

Произведение целых чисел

 1 #include <iostream>
 2 #include <windows.h>
 3 
 4 int main() {
 5     SetConsoleOutputCP(CP_UTF8);
 6 
 7     int count;
 8     std::cout << "Введите число слагаемых:";
 9     std::cin >> count;
10 
11     int product = 1;
12 
13     for(int i = 1; i <= count; i++) {
14         int x;
15         std::cout <<"Введите множитель " << i << ":";
16         std::cin >> x;
17         product *= x;
18     }
19 
20     std::cout << "Произведение равно " << product << std::endl;
21     return 0;
22 }

Сколько нечетных среди n введенных

 1 #include <iostream>
 2 #include <windows.h>
 3 
 4 int main() {
 5     SetConsoleOutputCP(CP_UTF8);
 6 
 7     int count = 0, n;
 8     std::cout << "Введите количество чисел: ";
 9     std::cin >> n;
10 
11     for(int i = 1; i <= n; i++) {
12         int x;
13         std::cout <<"Введите число " << i << ":";
14         std::cin >> x;
15 
16         if (x % 2 == 1) {
17             count++;
18         }
19     }
20 
21     std::cout << "Количество нечетных чисел равно " << count << std::endl;
22     return 0;
23 }

Защита от неверного ввода

 1 #include <iostream>
 2 #include <windows.h>
 3 
 4 int main() {
 5     SetConsoleOutputCP(CP_UTF8);
 6 
 7     int x;
 8     do {
 9         std::cout << "Введите x > 0: ";
10         std::cin >> x;
11         if (x <= 0) {
12             std::cout << "Неверный ввод." << std::endl;
13         }
14     } while (x <= 0);
15 }

Вывод 10 первых степеней двойки

 1 #include <iostream>
 2 #include <windows.h>
 3 
 4 int main() {
 5     SetConsoleOutputCP(CP_UTF8);
 6 
 7     int x = 2;
 8     for (int i = 1; i <= 10; i++) {
 9         std::cout << "2 ** " << i << " = " << x << std::endl;
10         x *= 2;
11     }
12 }

Вывод всех двухзначных чисел, кратных 5

 1 #include <iostream>
 2 #include <windows.h>
 3 
 4 int main() {
 5     SetConsoleOutputCP(CP_UTF8);
 6 
 7     int x = 10;
 8     while (x < 100) {
 9         std::cout << x << std::endl;
10         x += 5;
11     }
12 }

Вывод n первых чисел Фибоначчи

 1 #include <iostream>
 2 #include <windows.h>
 3 
 4 int main() {
 5     SetConsoleOutputCP(CP_UTF8);
 6 
 7     int n, a, b;
 8 
 9     std::cout << "Введите целое число n (n > 1): ";
10     std::cin >> n;
11 
12     a = 0; b = 1;
13     std::cout << a << " " << b << " ";
14     for (int i = 1; i <= n - 2; ++i) {
15         int tmp = a;
16         a = b;
17         b += tmp;
18         std::cout << b << " ";
19     }
20 }

Найти НОД(A,B), используя алгоритм Евклида:

 1 #include <iostream>
 2 #include <windows.h>
 3 
 4 int main() {
 5     SetConsoleOutputCP(CP_UTF8);
 6 
 7     int a, b;
 8 
 9     std::cout << "Введите целое число a:";
10     std::cin >> a;
11     std::cout << "Введите целое число b:";
12     std::cin >> b;
13 
14     while (b != 0) {
15         int tmp = a;
16         a = b;
17         b = tmp % b;
18     }
19 
20     std::cout << "НОД(A, B) = " << a;
21 }

Найти сумму цифр целого числа m

 1 #include <iostream>
 2 #include <windows.h>
 3 
 4 int main() {
 5     SetConsoleOutputCP(CP_UTF8);
 6 
 7     int m;
 8     std::cout << "Введите целое число m  (m > 1):";
 9     std::cin >> m;
10 
11     int sum = 0;
12     int m1 = abs(m);
13 
14     while (m1 > 0) {
15         sum += m1 % 10;
16         m1 /= 10;
17     }
18 
19     std::cout << "Сумма цифр числа " << m << " равна " << sum << std::endl;
20 }

Найти max из введенных чисел

 1 #include <iostream>
 2 #include <windows.h>
 3 
 4 int main() {
 5     SetConsoleOutputCP(CP_UTF8);
 6 
 7     int n, x;
 8 
 9     std::cout << "Введите количество чисел (n > 1):";
10     std::cin >> n;
11 
12     std::cout << "Введите число 1:";
13     std::cin >> x;
14     int max = x;
15 
16     for (int i = 2; i <= n; i++) {
17         std::cout << "Введите число " << i << ":";
18         std::cin >> x;
19         if (x > max) {
20             max = x;
21         }
22     }
23 
24     std::cout << "Максимальное из введенных чисел: " << max;
25 }

Найти min, удовлетворяющее условию p(x)

 1 #include <iostream>
 2 #include <windows.h>
 3 
 4 bool p(double x) {
 5     return x > 0;
 6 }
 7 
 8 int main() {
 9     SetConsoleOutputCP(CP_UTF8);
10 
11     int n, x;
12 
13     std::cout << "Введите количество чисел:";
14     std::cin >> n;
15 
16     bool exists = false;
17     double min = DBL_MAX;
18     for (int i = 0; i < n; ++i) {
19         std::cout << "Введите " << i+1 << " число:";
20         std::cin >> x;
21         if ((x < min) && p(x)) {
22             min = x;
23             exists = true;
24         }
25     }
26 
27     if (exists) {
28         std::cout << "Минимальное из введенных чисел, удовлетворяющих условию: " << min;
29     } else {
30         std::cout << "Нет чисел, удовлетворяющих условию";
31     }
32 }

Есть ли среди введенных число k?

 1 #include <iostream>
 2 #include <windows.h>
 3 
 4 int main() {
 5     SetConsoleOutputCP(CP_UTF8);
 6 
 7     int n, k, x;
 8     boolean exists = false;
 9 
10     std::cout << "Введите количество чисел:";
11     std::cin >> n;
12 
13     std::cout << "Введите искомое число:";
14     std::cin >> k;
15 
16     for (int i = 1; i <= n; i++) {
17         std::cout << "Введите число " << i << ":";
18         std::cin >> x;
19         if (x == k) {
20             exists = true;
21             break;
22         }
23     }
24 
25     if (exists) {
26         std::cout << "Число " << k << " было введено.";
27     } else {
28         std::cout << "Число " << k << " не было введено.";
29     }
30 }

Является ли число N>1 простым?

 1 #include <iostream>
 2 #include <windows.h>
 3 
 4 int main() {
 5     SetConsoleOutputCP(CP_UTF8);
 6 
 7     int n;
 8     std::cout << "Введите целое число n (n > 1):";
 9     std::cin >> n;
10 
11     bool isPrime = true;
12     for (int i = 2; i <= round(sqrt(n)); i++) {
13         if (n % i == 0) {
14             isPrime = false;
15             break;
16         }
17     }
18 
19     if (isPrime) {
20         std::cout << "Число " << n << " является простым";
21     } else {
22         std::cout << "Число " << n << " является составным";
23     }
24 }

Разложение числа на простые множители

 1 #include <iostream>
 2 #include <windows.h>
 3 
 4 bool p(double x) {
 5     return x > 0;
 6 }
 7 
 8 int main() {
 9     SetConsoleOutputCP(CP_UTF8);
10 
11     int x;
12 
13     std::cout << "Введите целое число x (x > 1):";
14     scanf_s("%d", &x);
15 
16     int i = 2;
17     std::cout << x << " = 1";
18     do {
19         if (x % i == 0) {
20             std::cout << " * " << i;
21             x = x / i;
22         } else {
23             i++;
24         }
25     } while (x != 1);
26 }