Advertisement
vadim_sharaf

Untitled

Nov 7th, 2022
1,115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.87 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_V2.txt", ios::in);
  17.  
  18.     int L1 = 0; //для подсчёта элементов массива
  19.     int x = 0; //для ввода из файла
  20.  
  21.     if (in1.is_open()) {
  22.         while (in1.peek() != EOF) {
  23.             in1 >> x;
  24.             L1++;
  25.         }
  26.     }
  27.     else {
  28.         cout << "Ошибка чтения файла\n";
  29.     }
  30.  
  31.     in1.clear();
  32.     in1.close();
  33.  
  34.     int* a = new int[L1 > 0 ? L1 : 1]{ 0 };
  35.  
  36.     in1.open("Input1_V2.txt", ios::in);
  37.     if (L1 > 0 && in1.is_open()) {
  38.  
  39.         x = 0;
  40.  
  41.         while (in1.peek() != EOF) {
  42.             in1 >> *(a + x);
  43.             x++;
  44.         }
  45.  
  46.     }
  47.     else if (L1 == 0) {
  48.         cout << "Файл не содержит элементов\n";
  49.     }
  50.  
  51.     in1.clear();
  52.     in1.close();
  53.  
  54.  
  55.     in1.open("Outup1_V2.txt", ios::out);
  56.     in1 << endl << "Массив a: реально считано " << L1 << " значений:" << endl;
  57.     in1 << "L1: " << L1 << endl;
  58.     for (int i = 0; i < L1; i++) {
  59.         in1 << *(a + i) << " ";
  60.     }
  61.     cout << "a: " << endl;
  62.     for (int i = 0; i < L1; i++) {
  63.         cout << *(a + i) << " ";
  64.     }
  65.     in1.clear();
  66.     in1.close();
  67.  
  68.     cout << endl << endl;
  69.  
  70.     fstream in2;
  71.     in2.open("Input2_V2.txt", ios::in);
  72.  
  73.     int L2 = 0;
  74.     x = 0;
  75.  
  76.     if (in2.is_open()) {
  77.         while (in2.peek() != EOF) {
  78.             in2 >> x;
  79.             L2++;
  80.         }
  81.     }
  82.     else {
  83.         cout << "Ошибка чтения файла\n";
  84.     }
  85.  
  86.     in2.clear();
  87.     in2.close();
  88.  
  89.  
  90.     int* b = new int[L2 > 0 ? L1 : 1];
  91.  
  92.  
  93.     in2.open("Input2_V2.txt", ios::in);
  94.     if (L2 > 0 && in2.is_open()) {
  95.  
  96.         x = 0;
  97.  
  98.         while (in2.peek() != EOF) {
  99.             in2 >> *(b + x);
  100.             x++;
  101.         }
  102.  
  103.     }
  104.     else if (L2 == 0) {
  105.         cout << "Файл не содержит элементов\n";
  106.     }
  107.  
  108.     in2.clear();
  109.     in2.close();
  110.  
  111.  
  112.     in2.open("Outup1_V2.txt", ios::out | ios::app);
  113.     in2 << endl << "Массив b: реально считано " << L2 << " значений:" << endl;
  114.     in2 << "L2: " << L2 << endl;
  115.     for (int i = 0; i < L2; i++) {
  116.         in2 << *(b + i) << " ";
  117.     }
  118.     cout << "b: " << endl;
  119.     for (int i = 0; i < L2; i++) {
  120.         cout << *(b + i) << " ";
  121.     }
  122.     in2.clear();
  123.     in2.close();
  124.  
  125.  
  126.     cout << endl << endl;
  127.  
  128.     int* c = new int[L1 > L2 ? L1 + 1 : L2 + 1] { 0 };
  129.  
  130.     int max = 0;
  131.     if (L1 < L2) {
  132.         max = L2;
  133.     }
  134.     else {
  135.         max = L1;
  136.     }
  137.  
  138.  
  139.     for (int i = max - 1; i >= 0; i--) {
  140.  
  141.         if (L1 < L2) {
  142.             if (i > L1) {
  143.                 *(c + i + 1) = *(b + i);
  144.             }
  145.             else if (L1 != 0) {
  146.                 *(c + i) = (*(c + i + 1) + *(a + i) + *(b + i)) / 10;
  147.                 *(c + i + 1) = (*(c + i + 1) + *(a + i) + *(b + i)) % 10;
  148.             }
  149.             else {
  150.                 *(c + i + 1) = *(b + i);
  151.             }
  152.         }
  153.         else if (L1 > L2) {
  154.             if (i > L2) {
  155.                 *(c + i + 1) = *(a + i);
  156.             }
  157.             else if (L2 != 0) {
  158.                 *(c + i) = (*(c + i + 1) + *(a + i) + *(b + i)) / 10;
  159.                 *(c + i + 1) = (*(c + i + 1) + *(a + i) + *(b + i)) % 10;
  160.             }
  161.             else {
  162.                 *(c + i + 1) = *(a + i);
  163.             }
  164.         }
  165.         else if (L1 = L2) {
  166.             *(c + i) = (*(c + i + 1) + *(a + i) + *(b + i)) / 10;
  167.             *(c + i + 1) = (*(c + i + 1) + *(a + i) + *(b + i)) % 10;
  168.         }
  169.     }
  170.  
  171.  
  172.     in2.open("Outup1_V2.txt", ios::out | ios::app);
  173.  
  174.  
  175.     cout << "c: \n";
  176.     for (int i = 0; i < max + 1; i++) {
  177.         cout << *(c + i) << " ";
  178.     }
  179.  
  180.     if (in2.is_open()) {
  181.         in2 << endl << "Результат сложения: " << endl;
  182.         for (int i = 0; i < max + 1; i++) {
  183.             in2 << *(c + i) << " ";
  184.         }
  185.     }
  186.     delete[] a, b, c;
  187.     in2.clear();
  188.     in2.close();
  189. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement