Advertisement
Hamikadze

Untitled

Oct 31st, 2017
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.75 KB | None | 0 0
  1. // LETI.INF.5.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "iostream"
  6. #include "fstream"
  7. #include <string>
  8. using namespace std;
  9.  
  10. char* path_output = "output.txt";
  11. char* path_input1 = "input.txt";
  12. const int SIZE = 30;
  13. int realSIZE = 0;
  14. int* pA;
  15.  
  16. bool solution()
  17. {
  18.     cout << "OK? [y/n]";
  19.     char result;
  20.     do
  21.     {
  22.         cin >> result;
  23.     } while (result != 'y' && result != 'n');
  24.     return result == 'y' ? true : false;
  25. }
  26.  
  27. bool fillArray()
  28. {
  29.     int N, x;
  30.     int size = SIZE;
  31.     ifstream file_input(path_input1);
  32.     if (file_input.is_open())
  33.     {
  34.         file_input >> N;
  35.         if (N < 0)
  36.         {
  37.             cout << "ОШИБКА : " << "кол-во ожидаемых элементов отрицательно [" << N << "]" << "\n";
  38.             cout << "Преобразовать кол-во элементов по модулю?" << "\n";
  39.             if (solution())
  40.             {
  41.                 N = abs(N);
  42.             }
  43.             else
  44.             {
  45.                 cout << "Кол-во элементов сброшено до 0" << "\n";
  46.             }
  47.         }
  48.         if (size < N)
  49.         {
  50.             cout << "ОШИБКА : " << "размер массива [" << size << "] меньше кол-ва ожидаемых элементов [" << N << "]" << "\n";
  51.             cout << "Уменьшить кол-во ожидаемых элементов до [" << size << "]" << "\n";
  52.             if (solution())
  53.             {
  54.                 N = size;
  55.             }
  56.             else
  57.             {
  58.                 return false;
  59.             }
  60.         }
  61.  
  62.         pA = new int[N];
  63.         for (int j = 0; j < N; j++)
  64.         {
  65.             *(pA + j) = 0;
  66.         }
  67.         int counter = 0;
  68.  
  69.         cout << "Массив " << ":" << "\n";
  70.         while (true)
  71.         {
  72.             if (file_input.eof())
  73.                 break;
  74.             file_input >> x;
  75.             *(pA + counter) = x;
  76.             cout << *(pA + counter) << ' ';
  77.             counter++;
  78.             if (counter >= N)
  79.                 break;
  80.         }
  81.         cout << "\n";
  82.         if (counter != N)
  83.         {
  84.             cout << "ВНИМАНИЕ : " << "кол-во загруженных элементов [" << counter << "] массива не соответствует кол-ву ожидаемых элементов [" << N << "]" << "\n";
  85.         }
  86.         realSIZE = counter;
  87.         file_input.close();
  88.         return true;
  89.     }
  90.     else
  91.     {
  92.         cout << "Unable to open file";
  93.         return false;
  94.     }
  95. }
  96.  
  97. void main()
  98. {
  99.     setlocale(LC_CTYPE, "Russian");
  100.     cout << "Формирование нового упорядоченного массива из двух сущесвующих," << "\n" <<
  101.         "содержащих упорядоченные множества, с помощью оперции объединения" << "\n" <<
  102.         "при помощи динамических массивов" << "\n" <<
  103.         "Автор : Визгунов Андрей Дмитриевич ФКТИ 7302" << "\n" <<
  104.         "Версия : 20.a.1" << "\n" << "\n";
  105.     fillArray();
  106.     ofstream myfile(path_output);
  107.     if (myfile.is_open())
  108.     {
  109.         cout << "Контрольный вывод:" << "\n" <<
  110.             "Обработано [" << realSIZE << "] элементов для первого массива" << "\n" << "\n";
  111.         myfile << "Контрольный вывод:" << "\n" <<
  112.             "Обработано [" << realSIZE << "] элементов для первого массива" << "\n" << "\n";
  113.         for (int i = 0; i < realSIZE / 2; ++i)
  114.         {
  115.             int temp = *(pA + i);
  116.             *(pA + i) = *(pA + realSIZE - i - 1);
  117.             *(pA + realSIZE - i - 1) = temp;
  118.             if (i % ((realSIZE / 2) / 5) == 0) {
  119.                 myfile << "Промежуточные значения для [" << i << "] итерации :" << "\n";
  120.                 for (int i = 0; i < realSIZE; i++) {
  121.                     myfile << *(pA + i) << ' ';
  122.                 }
  123.                 myfile << "\n";
  124.             }
  125.         }
  126.  
  127.         myfile << "\n" << "Результаты:" << "\n";
  128.         for (int i = 0; i < realSIZE; i++) {
  129.             myfile << *(pA + i) << ' ';
  130.         }
  131.         myfile.close();
  132.     }
  133.     else cout << "Unable to open file";
  134.  
  135.     if (pA != nullptr)
  136.         delete[]pA;
  137.     system("PAUSE");
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement