Advertisement
Vladislav8653

laba 2_2_c++

Oct 25th, 2022 (edited)
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.48 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int inputData(int min, int max) {
  5.     int n = 0;
  6.     bool isIncorrect;;
  7.     do {
  8.         cin >> n;
  9.         isIncorrect = false;
  10.         if (cin.fail() || (n < min) || (n > max) ) {
  11.             cout << "Please, enter a positive integer number:" << endl;
  12.             isIncorrect = true;
  13.             cin.clear();
  14.             while (cin.get() != '\n');
  15.         }
  16.     } while (isIncorrect);
  17.     return n;
  18. }
  19.  
  20. int enterArraySize() {
  21.     cout << "Input number of digits:" << endl;
  22.     const int min = 1;
  23.     const int max = 10;
  24.     return inputData(min, max);
  25. }
  26.  
  27. int* inputArray(int n) {
  28.     const int min = 1;
  29.     const int max = 9;
  30.     int* arr;
  31.     arr = new int[n];
  32.     cout << "Enter the numbers one by one: " << endl;
  33.     for (int i = 0; i < n; i++)
  34.         arr[i] = inputData(min, max);
  35.     return arr;
  36. }
  37.  
  38. int arrayToInt(int n, int* arr) {
  39.     int c = 0;
  40.     for (int i = 0; i < n; i++)
  41.         c = c * 10 + arr[i];
  42.     return c;
  43. }
  44.  
  45.  
  46. void divide(float number1, float number2) { // вывод по цифрам
  47.     float number = number1 / number2;
  48.     int k = 1;
  49.     int numberForLoopVirgin = int(number); // переменная для цикла1 while
  50.     if (numberForLoopVirgin == 0)
  51.         k = 0;
  52.     else
  53.         while ((numberForLoopVirgin /= 10) > 0) // количество знаков в целой части изначального числа
  54.             k++;
  55.     cout << "How many decimal places do you want to output? (<= 6)" << endl; // знаков после запятой
  56.     int demicalPlaces = 0;
  57.     const int min = 1;
  58.     const int max = 7;
  59.     demicalPlaces = inputData(min, max);
  60.     for (int i = 0; i < demicalPlaces; i++)
  61.         number = number * 10; // домножение на 10 "demicalPlaces" раз
  62.     int n = demicalPlaces + k;
  63.     int* arr;
  64.     arr = new int[n];
  65.     int numberInt = int(number); //  float to int (уже домноженное число)
  66.     for (int i = 0; i < n; i++) { // этот цикл создает массив из цифр числа. 1000 -> 1 0 0 0
  67.         arr[i] = numberInt % 10;
  68.         numberInt /= 10;
  69.     }
  70.     cout << "Result is: " << endl;
  71.     if (k == 0)
  72.         cout << "0" << endl;
  73.     for (int i = n - 1; i > (demicalPlaces - 1); i--)
  74.         cout << arr[i] << endl;
  75.     if (demicalPlaces > 0) {
  76.         cout << "," << endl;
  77.         for (int i = demicalPlaces - 1; i > -1; i--)
  78.             cout << arr[i] << endl;
  79.     }
  80. }
  81.  
  82. int main() {
  83.     int size1 = enterArraySize();
  84.     int* arr1 = inputArray(size1);
  85.     float number1 = arrayToInt(size1, arr1);
  86.     int size2 = enterArraySize();
  87.     int* arr2 = inputArray(size2);
  88.     float number2 = arrayToInt(size2, arr2);
  89.     divide(number1, number2);
  90.     return 0;
  91. }
  92.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement