Filage

lab3

Oct 10th, 2023
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.89 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3. #include <cmath>
  4. #include <string>
  5.  
  6. using namespace std;
  7.  
  8. int TakeNum(const int MIN, const int MAX) {
  9.     const string ERROR_CHOISE = "Проверьте корректность введнных данных!\n";
  10.     bool isIncorrect;
  11.     int num;
  12.     do {
  13.         isIncorrect = false;
  14.         cin >> num;
  15.         if (cin.fail()) {
  16.             isIncorrect = true;
  17.             cout << ERROR_CHOISE;
  18.             cin.clear();
  19.             while (cin.get() != '\n');
  20.         }
  21.         if (!isIncorrect && cin.get() != '\n') {
  22.             cin.clear();
  23.             while (cin.get() != '\n');
  24.             cout << ERROR_CHOISE;
  25.             isIncorrect = true;
  26.         }
  27.         if (!isIncorrect && (num < MIN || num > MAX)) {
  28.             isIncorrect = true;
  29.             cout << ERROR_CHOISE;
  30.         }
  31.     } while (isIncorrect);
  32.     return num;
  33. }
  34.  
  35. int main() {
  36.     setlocale(LC_ALL, "Rus");
  37.     const double e = 2.71; // Введение константы 'e'
  38.     int c, b, i = 0, integral, fractional;
  39.     double a, x, y, z, temp, M, N;
  40.     string strnum, integral_str, fractional_str;
  41.                   cout << "Задание 1\n"; // Первое задание
  42.                   cout << "Введите число 'c'\n";
  43.     c = TakeNum(1, 100);
  44.     cout << "Введите число 'b'\n";
  45.     b = TakeNum(1, 100);
  46.     a = 5 * cos(pow(c, 3)); // Находим число 'a', где функция pow() - возведение в степень
  47.     cout << "а = " << a << '\n';
  48.     x = (b * sqrt(pow(a, 2) - 1)) / (pow(a, 2) + pow(b, 2)) - 2.47 * a; // Находим число 'b', где функция sqrt() - взятие числа в корень
  49.     cout << "x = " << x << '\n';
  50.     y = pow(sin(sqrt(pow(x, 1 / 3))), 2) - pow(e, 0.4 * (1 + a));
  51.     cout << "y = " << y << '\n';
  52.     z = atan(y) + log10(fabs(x - 1)); // Находим число 'z', где функция atan() - взятие аркатнангенса числа, log10() - логарифм с онованием 10, а fabs() - взятия числа в модуль
  53.     cout << "Итог. z = " << z << '\n';
  54.     cout << "Задание 2\n"; // Второе задание
  55.     cout << "Введите число 'M'\n";
  56.     M = TakeNum(1, 10000);
  57.     cout << "Введите число 'N'\n";
  58.     N = TakeNum(1, 10000);
  59.     temp = M / N;
  60.     strnum = to_string(temp);
  61.     cout << "При делении получится: " << strnum << '\n';
  62.     while (strnum[i] != ',') {     // Разбиваем число на целую и дробную часть с помощью поиска запятой, перед запятой - целое, после - дробное
  63.         integral_str += strnum[i];
  64.         i++;
  65.     }
  66.     for (i++; i < size(strnum); i++)
  67.         fractional_str += strnum[i];
  68.     integral = stoi(integral_str); // Переводим строки в целочисленный тип данных с помощью функции stoi() из библиотеки <string>
  69.     fractional = stoi(fractional_str);
  70.     int max = fractional % 10;
  71.     while (fractional != 0) {        // Алгоритм нахождение максимальной и ниже минимальной цифры в числе, пока число не равно нулю, проверяем, больше ли остаток переменной max, дальше делим на 10 без остатка
  72.         if (fractional % 10 > max) {
  73.             max = fractional % 10;
  74.         }
  75.         fractional /= 10;
  76.     }
  77.     cout << "Старшая цифра дробной части равна: " << max << '\n';
  78.     int min = integral % 10;
  79.     while (integral != 0) {
  80.         if (integral % 10 < min) {
  81.             min = integral % 10;
  82.         }
  83.         integral /= 10;
  84.     }
  85.     cout << "Младшая цифра целой части равна: " << min << '\n';
  86. }
  87.  
Advertisement
Add Comment
Please, Sign In to add comment