Advertisement
vadim_sharaf

Untitled

Nov 7th, 2022
1,072
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.43 KB | None | 0 0
  1. #include <fstream>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.     setlocale(LC_ALL, "Rus");
  8.  
  9.     cout << "Выполнил: Тозлован Денис Дмитриевич\n";
  10.     cout << "Группа: 2309\n";
  11.     cout << "Версия: 4.1.1\n";
  12.     cout << "Задание: Рассматривая массивы a[1..n] и b[1..m] как последовательности цифр десятичной записи некоторых неотрицательных чисел, получить c[1..k] – аналогичное представление для суммы этих двух чисел.\n";
  13.  
  14.  
  15.     fstream in1;
  16.     in1.open("Input1_V1.txt", ios::in);
  17.  
  18.     int L1 = 0;
  19.     const int N1 = 40;
  20.  
  21.     int a[N1 + 1];
  22.  
  23.     if (in1 && !in1.eof()) {
  24.         in1 >> L1;
  25.     }
  26.     else if (in1.eof()) {
  27.         cout << "Пустой файл\n";
  28.     }
  29.     else {
  30.         cout << "Ошибка чтения файла\n";
  31.     }
  32.  
  33.  
  34.     if (L1 <= 0 || L1 == NULL) {
  35.         L1 = 0;
  36.         cout << "Известное входное количество значений 0 или пусто, корректировка L1 к 0\n";
  37.     }
  38.     else if (L1 <= N1) {
  39.         //избыточная память
  40.     }
  41.     else {
  42.         L1 = N1;
  43.         cout << "Входное количество значений больше вместимости массива, корректировка L1 к N1\n";
  44.     }
  45.  
  46.     int n = 0;
  47.     while (!in1.eof() && n < L1) {
  48.         in1 >> a[n];
  49.         n++;
  50.     }
  51.  
  52.     if (n > N1) {
  53.         cout << "Количество элементов не соответствует размеру массива, ввод только N1 = " << N1 << " элементов" << endl;
  54.     }
  55.     else if (n < N1) {
  56.         cout << "Количество элементов не соответствует размеру массива, ввод только n = " << n << " элементов" << endl;
  57.     }
  58.     /* if (L1 != n) {
  59.         cout << "Входное значение количества элементов не соответствует реальному количеству элементов, корректировка L1 к " << n << endl;
  60.         L1 = n;
  61.     } */
  62.  
  63.     cout << "a: " << endl;
  64.     for (int i = 0; i < L1; i++) {
  65.         cout << a[i] << " ";
  66.     }
  67.  
  68.     in1.clear();
  69.     in1.close();
  70.  
  71.     in1.open("Outup1_V1.txt", ios::out);
  72.     in1 << "Массив a: реально считано " << L1 << " значений:" << endl;
  73.     for (int i = 0; i < L1; i++) {
  74.         in1 << a[i] << " ";
  75.     }
  76.  
  77.     in1.clear();
  78.     in1.close();
  79.  
  80.  
  81.  
  82.  
  83.     cout << endl << endl;
  84.  
  85.  
  86.     fstream in2;
  87.     in2.open("Input2_V1.txt", ios::in);
  88.  
  89.     int L2 = 0;
  90.     const int N2 = 40;
  91.  
  92.     int b[N2 + 1];
  93.  
  94.     if (in2 && !in2.eof()) {
  95.         in2 >> L2;
  96.     }
  97.     else if (in2.eof()) {
  98.         cout << "Пустой файл\n";
  99.     }
  100.     else {
  101.         cout << "Ошибка чтения файла\n";
  102.     }
  103.  
  104.  
  105.     if (L2 <= 0 || L2 == NULL) {
  106.         L2 = 0;
  107.         cout << "Известное входное количество значений 0 или пусто, корректировка L1 к 0\n";
  108.     }
  109.     else if (L2 <= N2) {
  110.         //избыточная память
  111.     }
  112.     else {
  113.         L2 = N2;
  114.         cout << "Входное количество значений больше вместимости массива, корректировка L1 к N1\n";
  115.     }
  116.  
  117.     n = 0;
  118.     while (!in2.eof() && n < L2) {
  119.         in2 >> b[n];
  120.         n++;
  121.     }
  122.  
  123.  
  124.     if (n > N2) {
  125.         cout << "Количество элементов не соответствует размеру массива, ввод только N1 = " << N2 << " элементов" << endl;
  126.     }
  127.     else if (n < N2) {
  128.         cout << "Количество элементов не соответствует размеру массива, ввод только n = " << n << " элементов" << endl;
  129.     }
  130.     /*if (L2 != n) {
  131.         cout << "Входное значение количества элементов не соответствует реальному количеству элементов, корректировка L1 к " << n << endl;
  132.         L2 = n;
  133.     } */
  134.  
  135.     cout << "b: " << endl;
  136.     for (int i = 0; i < L2; i++) {
  137.         cout << b[i] << " ";
  138.     }
  139.  
  140.     in2.clear();
  141.     in2.close();
  142.  
  143.     in2.open("Outup1_V1.txt", ios::out | ios::app);
  144.     in2 << endl << "Массив b: реально считано " << L2 << " значений:" << endl;
  145.     for (int i = 0; i < L2; i++) {
  146.         in2 << b[i] << " ";
  147.     }
  148.  
  149.     in2.clear();
  150.     in2.close();
  151.  
  152.  
  153.  
  154.     cout << endl << endl;
  155.  
  156.     const int k = 40;
  157.     int c[k + 1] = { 0 };
  158.  
  159.     int max = 0;
  160.     if (L1 < L2) {
  161.         max = L2;
  162.     }
  163.     else {
  164.         max = L1;
  165.     }
  166.  
  167.     if (max > k) {
  168.         max = k;
  169.     }
  170.  
  171.     //int invi = 0;
  172.     //invi = abs(i - (max + 1));
  173.     for (int i = max - 1; i >= 0; i--) {
  174.  
  175.         if (L1 < L2) {
  176.             if (i > L1 - 1) {
  177.                 c[i + 1] = b[i];
  178.             }
  179.             else {
  180.                 c[i] = (a[i] + b[i]) / 10;
  181.                 c[i + 1] = (c[i + 1] + a[i] + b[i]) % 10;
  182.             }
  183.         }
  184.         else if (L1 > L2) {
  185.             if (i > L2 - 1) {
  186.                 c[i + 1] = a[i];
  187.             }
  188.             else {
  189.                 c[i] = (c[i + 1] + a[i] + b[i]) / 10;
  190.                 c[i + 1] = (c[i + 1] + a[i] + b[i]) % 10;
  191.             }
  192.         }
  193.         else if (L1 = L2) {
  194.             c[i] = (c[i + 1] + a[i] + b[i]) / 10;
  195.             c[i + 1] = (c[i + 1] + a[i] + b[i]) % 10;
  196.         }
  197.     }
  198.  
  199.     int sdvig = k - max;
  200.     if (k > max) {
  201.         for (int i = max; i >= 0; i--) {
  202.             c[i + sdvig] = c[i];
  203.             c[i] = 0;
  204.         }
  205.     }
  206.  
  207.     in2.open("Outup1_V1.txt", ios::out | ios::app);
  208.  
  209.  
  210.     cout << "c: \n";
  211.     for (int i = 0; i < k + 1; i++) {
  212.         cout << c[i] << " ";
  213.     }
  214.  
  215.     if (in2.is_open()) {
  216.         in2 << endl << "Результат сложения: " << endl;
  217.         for (int i = 0; i < k + 1; i++) {
  218.             in2 << c[i] << " ";
  219.         }
  220.     }
  221.  
  222.     in2.clear();
  223.     in2.close();
  224. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement