Advertisement
StreetKatya

menu&matrix

Dec 7th, 2022
906
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.09 KB | None | 0 0
  1. #include<iostream>//stream(istream(cin,ifstream), ostream(cout,ofstream))
  2. #include<fstream>//ifstream ofstraem
  3. #include<iomanip>//setw()
  4. #include<string>
  5. using namespace std;
  6. int** newMatrix(istream& in, int& n, int& m);
  7. void printMatrix(ostream& out, int** A, int n, int m);
  8. void clearMatrix(int**& A, int n);
  9. extern "C" {
  10.     int haracteristic(int** A, int n, int m);
  11.     void preobrazovanie(int** A, int n, int m);
  12. }
  13. int ShowMenu() {
  14.     int punktMenu;
  15.     system("cls");
  16.     cout << "1. Ввод матрицы с клавиатуры " << endl;
  17.     cout << "2. Ввод матрицы с файла " << endl;
  18.     cout << "3. Печать матрицы " << endl;
  19.     cout << "4. Характеристика " << endl;//В матрице существует столбец, все элементы которого удвоенные нечетные числа.
  20.     cout << "5. Преобразование матрицы " << endl;//Получить новую матрицу В, элемент bij которой равен сумме элемента aij исходной матрицы и максимума j столбца.
  21.     cout << "6. Выход " << endl;
  22.     cout << "Введите пункт меню : ";
  23.     cin >> punktMenu;
  24.     cin.ignore(2, '\n');
  25.     return punktMenu;
  26. }
  27. int main() {
  28.     setlocale(LC_ALL, "");
  29.     string nameFile;
  30.     int** matrix = nullptr;
  31.     int** matrix2 = nullptr;
  32.     int n, m;
  33.     bool isInputMatrix = false;
  34.     int selectPunkt = 0;
  35.     while (selectPunkt != 7) {
  36.         selectPunkt = ShowMenu();
  37.         switch (selectPunkt) {
  38.         case 1: {
  39.             if (isInputMatrix) {
  40.                 clearMatrix(matrix, n);
  41.                 isInputMatrix = false;
  42.             }
  43.             cout << "Введите размеры матрицы и матрицу " << endl;
  44.             matrix = newMatrix(cin, n, m);
  45.             isInputMatrix = true;
  46.             cout << "Успешно прочитано" << endl;
  47.             break;
  48.         }
  49.         case 2: {
  50.             if (isInputMatrix) {
  51.                 clearMatrix(matrix, n);
  52.                 isInputMatrix = false;
  53.             }
  54.             cout << "Input file name :";
  55.             //cin >> nameFile;
  56.             getline(cin, nameFile);
  57.             ifstream inFile(nameFile);
  58.             if (!inFile.is_open()) {
  59.                 cout << "Ошибка открытия файла " << endl;
  60.                 break;
  61.             }
  62.             matrix = newMatrix(inFile, n, m);
  63.             matrix2 = newMatrix(inFile, n, m);
  64.             inFile.close();
  65.             isInputMatrix = true;
  66.             cout << "Матрица введена" << endl;
  67.             break;
  68.         }
  69.         case 3: {
  70.             if (!isInputMatrix) {
  71.                 cout << "Матрица не введена, используйте пункты 1 или 2" << endl;
  72.                 break;
  73.             }
  74.             printMatrix(cout, matrix, n, m);
  75.             break;
  76.         }
  77.         case 4: {
  78.             if (!isInputMatrix) {
  79.                 cout << "Матрица не введена, используйте пункты 1 или 2" << endl;
  80.                 break;
  81.             }
  82.             if (haracteristic(matrix, n, m) == 1)
  83.             {
  84.                 cout << "Характеистика выполняется" << endl;
  85.             }
  86.             else cout << "Характеистика не выполняется" << endl;
  87.             //cout << "Допиши код!!!" << endl;
  88.             break;
  89.         }
  90.         case 5: {
  91.             if (!isInputMatrix) {
  92.                 cout << "Матрица не введена, используйте пункты 1 или 2" << endl;
  93.                 break;
  94.             }
  95.             preobrazovanie(matrix, n, m);
  96.             cout << "Преобразование выполнено" << endl;
  97.             break;
  98.         }
  99.         case 6: break;
  100.         default: {
  101.             cout << "Ай-ай-ай, такого пункта в меню нет!!!" << endl;
  102.         }
  103.         }
  104.         system("pause");
  105.     }
  106.  
  107.  
  108.     if (isInputMatrix)
  109.         clearMatrix(matrix, n);
  110.     system("pause");
  111.     return 0;
  112. }
  113.  
  114. int** newMatrix(istream& in, int& n, int& m)
  115. {
  116.     in >> n >> m;
  117.     int** a = new int* [n + 1];
  118.     a[n] = new int[n * m];
  119.     for (int i = 0; i < n; i++) {
  120.         a[i] = &a[n][i * m];
  121.     }
  122.     for (int i = 0; i < n; i++) {
  123.         for (int j = 0; j < m; j++) {
  124.             in >> a[i][j];
  125.         }
  126.     }
  127.     return a;
  128. }
  129.  
  130. void printMatrix(ostream& out, int** A, int n, int m)
  131. {
  132.     if (&out != &cout) {
  133.         out << n << " " << m << endl;
  134.     }
  135.     for (int i = 0; i < n; i++) {
  136.         for (int j = 0; j < m; j++) {
  137.             out << setw(5) << A[i][j];
  138.         }
  139.         out << endl;
  140.     }
  141. }
  142.  
  143. void clearMatrix(int**& A, int n)
  144. {
  145.     delete[]A[n];
  146.     delete[]A;
  147.     A = nullptr;
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement