Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <conio.h>
- using namespace std;
- int main() {
- setlocale(LC_ALL, "Russian");
- double flag;
- cin >> flag;
- if (flag == 1.1) {
- int num = 0;
- while (num < 100) {
- if (num % 5 == 0) { // Пока число двухзначеное, проверяем, делиться ли нацело на 5, потому прибавляем 1
- cout << num << "\n";
- }
- num = num + 1;
- }
- return main(); // return скорее всего вам нельзя использовать. Здесь он нужен, чтобы после if можно было бы опять ввести flag
- // и проверить другой номер задания. В лабе его можно не писать.
- }
- if (flag == 1.2) {
- int two = 1;
- for (int i = 1; i < 11; i++) { // 10 раз подряд умножаем число на 2, а потом его выводим
- two *= 2; // two *= 2 равносильно two = two * 2. Просто так короче писать
- cout << two << "\n";
- }
- return main();
- }
- if (flag == 1.3) {
- int n;
- int number;
- int oddNumbers = 0;
- cin >> n;
- for (int i = 0; i < n; i++) {
- cin >> number;
- if (number % 2 != 0) { // Проверяем каждое введенное число на нечетность, для этого делим на 2 с остатком
- oddNumbers += 1; // Об этом писал выше. Можно вообще писать было "oddNumbers++", тоже самое
- }
- }
- cout << oddNumbers;
- return main();
- }
- if (flag == 1.4) {
- int n;
- int num = 1;
- cin >> n;
- for (int i = 1; i < n + 1; i++) {
- num *= i; // Формулировка задния странная, я подумал, что нужно просто найти факториал. Ничего сложного
- }
- cout << num;
- return main();
- }
- if (flag == 1.5) {
- int n;
- int num = 0;
- cin >> n;
- for (int i = 0; i < n + 1; i++) {
- num += i; // Почти тоже самое, что и в прошлый раз, но только сумма
- }
- cout << num;
- return main();
- }
- if (flag == 1.6) {
- int n;
- int num = 1;
- cin >> n;
- for (int i = 1; i < n + 1; i++) {
- num *= i; // Опять фактириал числа -_- Скучновато
- }
- cout << num;
- return main();
- }
- if (flag == 1.7) {
- int n;
- cin >> n;
- int first = 1;
- int second = 1;
- for (int i = 0; i < n - 1; i++) { // Что такое числа Фибаначи думаю объяснять не надо
- cout << first << "\n"; // Сначала выводим первые два числа, потом просто по циклу делаем из 1 числа 3, из 2 в 4 просто прибавляя
- cout << second << "\n"; // По идее легко
- first = first + second;
- second = second + first;
- }
- return main();
- }
- if (flag == 1.8) {
- int m;
- int sum = 0;
- cin >> m;
- while (m > 0) {
- sum += m % 10; // Задание не сложное. Просто в сууму добавляем остаток числа от деления на 10
- m /= 10; // А потом это число делим на 10
- }
- cout << sum;
- return main();
- }
- if (flag == 1.9) {
- int n;
- cin >> n;
- int num;
- int max;
- cin >> num;
- max = num; // Задавать max = 0 в начале ошибка, потмоу что мы можем ввести все отрицательные числа и консолька просто выведет 0 ;)
- for (int i = 0; i < n - 1; i++) {
- if (num > max) {
- max = num; // Простая проверка в цикле на максимальное число
- }
- cin >> num;
- if (num > max) {
- max = num; // Здесь стоит вторая проверка для того, чтобы проверять самое последнее введенное число на максимальное
- }
- }
- cout << max;
- return main();
- }
- if (flag == 1.11) { // Вообще это задание 1.10, просто компилятор принимает 1.10 за 1.1 :(
- int sum = 0;
- int kolvo = 0;
- int num;
- int finalNum;
- int n;
- cin >> n;
- for (int i = 0; i < n; i++) {
- cin >> num;
- sum += num; // Даже не знаю, что здесь объяснять. Вводим число, прибавляем его к сумме
- kolvo++; // и увеличивем количество чисел на один.
- }
- finalNum = sum / kolvo;
- cout << finalNum;
- return main();
- }
- // Интересное задание с попаданием точки
- if (flag == 2.1) {
- double x;
- double y;
- for (int i = 1; i < 11; i++) {
- cin >> x;
- cin >> y;
- if ((x >= 0 && y <= 0) && ((x * x + y * y) <= 1)) { // Есть формула (x - x0)^2 + (y - y0)^2 = R^2, где x0 и y0 центр окружности
- cout << "Попадание!\n"; // Всё остально просто
- }
- else {
- cout << "Промах -_- \n";
- }
- }
- return main();
- }
- if (flag == 2.2) {
- double x;
- double y;
- for (int i = 1; i < 11; i++) {
- cin >> x;
- cin >> y;
- if ((x >= 0) && (x <= 3) && (y >= -2) && (y <= 3)) { // Ничего сложного, просто вводим ограничения точкам
- cout << "Попадание!\n";
- }
- else {
- cout << "Промах -_- \n";
- }
- }
- return main();
- }
- if (flag == 2.3) {
- double x;
- double y;
- for (int i = 1; i < 11; i++) {
- cin >> x;
- cin >> y;
- if ((x <= 0 && y <= 0) && ((x * x + y * y) <= 16)) { // Тоже самое, что и 2.1
- cout << "Попадание!\n";
- }
- else {
- cout << "Промах -_- \n";
- }
- }
- return main();
- }
- if (flag == 2.4) { // Самое наверное сложное и интересное задания во втором пункте
- double x; // Для этого задания существует классная формула по ссылке https://www.cyberforum.ru/algorithms/thread144722.html
- double y; // Использовал я эту формулу только если треугольник не привязан стороной к центру координат (0, 0)
- for (int i = 1; i < 11; i++) {
- cin >> x;
- cin >> y;
- double a = ((-3) - x) * (-6) - (6) * (3 - y);
- double b = (3 - x) * (0) - (-6) * (-3 - y);
- double c = ((-3) - x) * (6) - (0) * (-3 - y);
- if ((a >= 0 && b >= 0 && c >= 0) || (a <= 0 && b <= 0 && c <= 0)) {
- cout << "Попадание!\n";
- }
- else {
- cout << "Промах -_- \n";
- }
- }
- return main();
- }
- if (flag == 2.5) {
- double x;
- double y;
- for (int i = 1; i < 11; i++) {
- cin >> x;
- cin >> y;
- if ((x >= 0 && y >= 0) && (x + y <= 3)) { // Здесь уже треугольник привязан к началу координат, поэтому всё легче легкого в теории
- cout << "Попадание!\n";
- }
- else {
- cout << "Промах -_- \n";
- }
- }
- return main();
- }
- if (flag == 2.6) {
- double x;
- double y;
- for (int i = 1; i < 11; i++) {
- cin >> x;
- cin >> y;
- if ((x >= 0) && ((x * x + y * y) <= 1)) { // Почти тоже самое, что и 2.1
- cout << "Попадание!\n";
- }
- else {
- cout << "Промах -_- \n";
- }
- }
- return main();
- }
- if (flag == 2.7) {
- double x;
- double y;
- for (int i = 1; i < 11; i++) {
- cin >> x;
- cin >> y;
- double a = ((-2) - x) * (0) - (4) * (2 - y);
- double b = (2 - x) * (-4) - (0) * (2 - y);
- double c = (2 - x) * (4) - (-4) * (-2 - y);
- if ((a >= 0 && b >= 0 && c >= 0) || (a <= 0 && b <= 0 && c <= 0)) { // Тоже самое, что и 2.4, просто координнаты поменять
- cout << "Попадание!\n";
- }
- else {
- cout << "Промах -_- \n";
- }
- }
- return main();
- }
- if (flag == 2.8) {
- double x;
- double y;
- for (int i = 1; i < 11; i++) {
- cin >> x;
- cin >> y;
- double a = (1 - x) * (-2) - (0) * (1 - y);
- double b = (1 - x) * (0) - (-2) * (-1 - y);
- double c = ((-1) - x) * (2) - (2) * (-1 - y);
- if ((a >= 0 && b >= 0 && c >= 0) || (a <= 0 && b <= 0 && c <= 0)) { // Тоже самое, что и 2.4, просто координнаты поменять
- cout << "Попадание!\n";
- }
- else {
- cout << "Промах -_- \n";
- }
- }
- return main();
- }
- if (flag == 3.3) {
- int xStart;
- int xEnd;
- int step;
- double f;
- bool isIncorrect;
- do {
- do {
- isIncorrect = false;
- cout << "Введите x-начальное\n";
- cin >> xStart;
- if (xStart < -3) {
- isIncorrect = true;
- cout << "Пожалуйста, введите координату заново, она не должна быть меньше -3";
- }
- } while (isIncorrect);
- do {
- isIncorrect = false;
- cout << "Введите x-конечное\n";
- cin >> xEnd;
- if (xEnd > 7) {
- isIncorrect = true;
- cout << "Пожалуйста, введите координату заново, она не должна быть больше 7";
- }
- } while (isIncorrect);
- if (xStart > xEnd) {
- isIncorrect = true;
- cout << "Начальная координата не должна превышать конечную";
- }
- } while (isIncorrect);
- cout << "Введите шаг dx\n";
- cin >> step;
- cout << "\n----------\n";
- cout << "x | f\n";
- cout << "----------\n";
- for (int i = xStart; i <= xEnd; i += step) {
- if (i <= -2) {
- f = - i - 2;
- }
- else if (i > -2 && i < 0) {
- f = sqrt(1 - (-1 - i) * (-1 - i));
- }
- else if (i == 0) {
- f = 0;
- }
- else if (i > 0 && i < 4) {
- f = -sqrt(4 - (2 - i) * (2 - i));
- }
- else if (i >= 4 && i < 6) {
- f = (i - 4) / -2;
- }
- else {
- f = -1;
- }
- cout << i << " | " << f << "\n";
- }
- cout << "----------";
- return main();
- }
- if (flag == 4.3) {
- }
- if (flag == 5.1) {
- for (int i = 0; i < 4; i++) { // Всего будет 4 столбика
- int num = 1;
- while (num < 11){ // И, пока не станет 11, то будет писать прибавлять 1 и выводить в консоль
- cout << num << " ";
- num++;
- }
- cout << "\n"; // Для красоты
- }
- }
- if (flag == 5.2) { // Тоже самое, как и в 5.1, просто другие числа
- for (int i = 0; i < 5; i++) {
- int num = -10;
- while (num < 6) {
- cout << num << " ";
- num++;
- }
- cout << "\n";
- }
- }
- if (flag == 5.3) {
- int num = 41;
- int num1 = num;
- for (int i = 0; i < 3; i++) {
- while (num1 < (num + 10)) {
- cout << num1 << " ";
- num1++;
- }
- cout << "\n";
- num = num1;
- }
- }
- if (flag == 5.4) {
- int num = 0;
- int n = 6;
- for (int i = 0; i < 6; i++) {
- while (num < n) {
- cout << num << " ";
- num++;
- }
- num = 0;
- n = n - 1;
- cout << "\n";
- }
- }
- if (flag == 5.5) {
- int num = 4;
- int n = -1;
- for (int i = 0; i < 5; i++) {
- while (num > n) {
- cout << num << " ";
- num--;
- }
- num = 4;
- n = n + 1;
- cout << "\n";
- }
- }
- if (flag == 5.6) { // Самое сложное задание в разделе 5
- int num = 0;
- int n = 7;
- int columns = 1;
- int l = 1;
- for (int i = 0; i < 3; i++) {
- int rows = l;
- for (int j = 0; j < columns; j++) {
- while (rows > 0) {
- cout << num << " ";
- rows--;
- }
- rows = l;
- cout << "\n";
- while (rows > 0) {
- cout << n << " ";
- rows--;
- }
- }
- cout << "\n";
- num++;
- n--;
- l++;
- }
- }
- if (flag == 5.7) { // Дальше все, к сожалению, однотипно :(
- int num = 1;
- int n = 4;
- for (int i = 0; i < 4; i++) {
- for (int i = 0; i < n; i++) {
- cout << num << " ";
- }
- num++;
- n--;
- cout << "\n";
- }
- }
- if (flag == 5.8) {
- int num = 1;
- int n = 2;
- for (int i = 0; i < 4; i++) {
- while (num < n) {
- cout << num << " ";
- num++;
- }
- num = 1;
- n++;
- cout << "\n";
- }
- }
- if (flag == 5.9) {
- int num = 0;
- int n = 5;
- for (int i = 0; i < 5; i++) {
- for (int i = 0; i < n; i++) {
- cout << num << " ";
- }
- n--;
- cout << "\n";
- }
- }
- if (flag == 5.11) {
- int num = 5;
- int n = 1;
- for (int i = 0; i < 5; i++) {
- for (int i = 0; i < n; i++) {
- cout << num << " ";
- }
- n++;
- cout << "\n";
- }
- }
- if (flag == 6.1) {
- int A, B, sum, k;
- bool isIncorrect;
- sum = 0;
- do {
- isIncorrect = false;
- cout << "Введите начальную координату отрезка\n";
- cin >> A;
- cout << "Введите конечную координату отрезка\n";
- cin >> B;
- if (A / 1000 < 1 && B / 1000 < 1) {
- isIncorrect = true;
- cout << "Пожалуйста, введите отрезок заново";
- }
- } while (isIncorrect);
- cout << "Результат программы";
- for (int i = A; i <= B; i++){
- k = i;
- sum = 0;
- if (i / 1000 > 1 && i / 1000 < 10 && i % 2 != 0) {
- while (k != 0)
- {
- sum += k % 10;
- k /= 10;
- }
- if (i % sum == 0) {
- cout << i << " ";
- }
- }
- }
- }
- if (flag == 6.2) {
- int A, B, digit, k, l, h;
- cout << "Введите начальную координату отрезка\n";
- cin >> A;
- cout << "Введите конечную координату отрезка\n";
- cin >> B;
- cout << "Результат программы";
- for (int number = A; number <= B; number++) {
- k = number;
- digit = 0;
- l = 0;
- h = 0;
- if (number % 2 != 0) { // Проверяем на нечетность
- while (k != 0)
- {
- digit = k % 10; // Находим каждую цифру
- h++; // Также считаем, сколько цифр уже есть в числе
- if (digit != 0 && number % digit == 0) { // Проверяем на то, что должно делиться без остатка на каждую цифру
- l++; // И считаем, сколько раз оно смогло так поделить без остатка
- }
- k /= 10;
- }
- if (l == h) { // Если количество цифр ВСЕГО совпало с количеством цифр, который делят без остатка наше число, то
- cout << number << " "; // Записываем наше число
- }
- }
- }
- }
- if (flag == 6.3) { // Задачка не сложная, просто ищем совпадения, добавляя в с по единичке
- int n, d, c;
- cin >> n;
- for (int a = 1; a < n; a++) {
- for (int b = a; b < n; b++) {
- d = a * a + b * b;
- c = 1;
- while (c * c < d) {
- c++;
- }
- if (d == c * c && c < n) {
- cout << a << " " << b << " " << c << "\n";
- }
- }
- }
- }
- if (flag == 6.4) { // Вот бы массивы можно было использовать :(
- }
- if (flag == 6.5) {
- int firstNum;
- int copyOfFirstNum;
- int secondNum;
- secondNum = 0;
- cout << "Введите ваше число\n";
- cin >> firstNum;
- copyOfFirstNum = firstNum;
- while (copyOfFirstNum != 0)
- {
- secondNum = secondNum * 10 + copyOfFirstNum % 10; // Данная строка записывает числа не так, как мы их вводим(например 1->2->0->1, то есть 1201, а будте 1021)
- copyOfFirstNum /= 10;
- }
- if (firstNum == secondNum) {
- cout << "Заданное число является палиндромом";
- }
- else {
- cout << "Заданное число не является палиндромом";
- }
- }
- if (flag == 6.6) { //Если не понятно, то надо объяснять на словах
- int A, B, sum, k, count;
- bool isIncorrect;
- k = 0;
- sum = 0;
- do {
- isIncorrect = false;
- cout << "Введите начальную координату отрезка\n";
- cin >> A;
- cout << "Введите конечную координату отрезка\n";
- cin >> B;
- if (A < 1 || B > 10000 || A > B) {
- isIncorrect = true;
- cout << "Пожалуйста, введите отрезок заново\n";
- }
- } while (isIncorrect);
- count = B - A + 1;
- for (int i = A; i <= B; i++) {
- k = 0;
- for (int j = 2; j <= ((int)sqrt(i) + 1); j++) {
- if (i % j == 0) {
- k++;
- }
- }
- if (k > 0) {
- count--;
- }
- }
- cout << "Количество простых чисел: " << count;
- }
- if (flag == 6.7) { // Почти то же самое, что и 6.5
- int copyOfNum;
- int checkNum;
- for (int i = 10000; i < 100000; i++) {
- checkNum = 0;
- copyOfNum = i;
- if (i % 2 != 0) {
- while (copyOfNum != 0)
- {
- checkNum = checkNum * 10 + copyOfNum % 10;
- copyOfNum /= 10;
- }
- if (i == checkNum) {
- cout << i << "\n";
- }
- }
- }
- }
- if (flag == 6.8) { // Самая наркоманская задачка в пункте 6, ждать надо будет часа пол, пока выведет все числа. Плюс еше памят засориться оперативная, фу
- int sum1, sum2;
- int copyOfNum;
- for (int i = 999999; i > 989999; i--) {
- sum1 = 0;
- sum2 = 0;
- copyOfNum = i;
- while (copyOfNum > 999)
- {
- sum1 += copyOfNum % 10;
- copyOfNum /= 10;
- }
- while (copyOfNum != 0)
- {
- sum2 += copyOfNum % 10;
- copyOfNum /= 10;
- }
- if (sum1 == sum2) {
- cout << i << "\n";
- }
- }
- for (int i = 99999; i > 10000; i--) {
- sum1 = 0;
- sum2 = 0;
- copyOfNum = i;
- while (copyOfNum > 99)
- {
- sum1 += copyOfNum % 10;
- copyOfNum /= 10;
- }
- while (copyOfNum != 0)
- {
- sum2 += copyOfNum % 10;
- copyOfNum /= 10;
- }
- if (sum1 == sum2) {
- cout << i << "\n";
- }
- }
- for (int i = 9999; i > 1000; i--) {
- sum1 = 0;
- sum2 = 0;
- copyOfNum = i;
- while (copyOfNum > 9)
- {
- sum1 += copyOfNum % 10;
- copyOfNum /= 10;
- }
- while (copyOfNum != 0)
- {
- sum2 += copyOfNum % 10;
- copyOfNum /= 10;
- }
- if (sum1 == sum2) {
- cout << i << "\n";
- }
- }
- }
- if (flag == 6.9) { // Самая легка задачка в пункте 6
- int N, sum;
- sum = 0;
- cout << "Введите ваше число\n";
- cin >> N;
- while (N != 0)
- {
- sum += N % 10;
- N /= 10;
- }
- cout << "Сумма цифр равна: " << sum;
- }
- if (flag == 6.111) {
- int firstNum;
- int copyOfFirstNum;
- int secondNum;
- secondNum = 0;
- cout << "Введите ваше число\n";
- cin >> firstNum;
- copyOfFirstNum = firstNum;
- while (copyOfFirstNum != 0)
- {
- secondNum = secondNum * 10 + copyOfFirstNum % 10;
- copyOfFirstNum /= 10;
- }
- cout << "Обратное число: " << secondNum;
- }
- if (flag == 6.11) { // АБСОЛЮТНО точно так же, как и 6.5, просто заменили слово палендром на сииметрично...
- int firstNum;
- int copyOfFirstNum;
- int secondNum;
- secondNum = 0;
- cout << "Введите ваше число\n";
- cin >> firstNum;
- copyOfFirstNum = firstNum;
- while (copyOfFirstNum != 0)
- {
- secondNum = secondNum * 10 + copyOfFirstNum % 10; // Данная строка записывает числа не так, как мы их вводим(например 1->2->0->1, то есть 1201, а будте 1021)
- copyOfFirstNum /= 10;
- }
- if (firstNum == secondNum) {
- cout << "Заданное число является симметричным";
- }
- else {
- cout << "Заданное число не является симметричным";
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment