Guest User

Untitled

a guest
May 13th, 2012
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.44 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <iostream>
  4. #include <conio.h>
  5. #include <clocale>
  6. #include <fstream>
  7. using namespace std;
  8.  
  9. int menu(int**&, int&, int&); // Меню программы
  10. int input_matrix(int**&, int &, int &); // Создание матрицы из данных файла
  11. int output_matrix_file(int**&, int, int); // Вывод матрицы в файл
  12. int output_matrix_screen(int**, int, int); // Вывод матрицы на экран
  13. int set_element(int**, int, int); // Установка значения элемента с заданными индексами
  14. int element_info(int**, int, int); // Вывод значения элемента с заданными индексами
  15. int matrix_line(int**, int, int); // Изменение кол-ва строк матрицы
  16. int matrix_column(int**, int, int); // Изменение кол-ва столбцов матрицы
  17. int info_line(int**, int, int); // Вывод кол-ва строк
  18. int info_column(int**, int, int); // Вывод кол-ва столбцов
  19. int delete_matrix(int**&, int, int); // Очистка памяти
  20.  
  21. int main()
  22. {
  23.         setlocale(LC_ALL, "Russian");
  24.         int **matrix, line, column;
  25.         input_matrix(matrix, line, column);
  26.         menu(matrix, line, column);
  27.         delete_matrix(matrix, line, column);
  28.         _getch();
  29.         return 0;
  30. }
  31.  
  32. int menu(int **&matrix, int &line, int &column)
  33. {
  34.         int ch;
  35.         for(;;)
  36.         {
  37.                 cout << "Введи что ты хочешь сделать:\n";
  38.                 cout << "1. Вывести матрицу\n";
  39.                 cout << "2. Установить значение элементу\n";
  40.                 cout << "3. Узнать значение элемента\n";
  41.                 cout << "4. Изменить кол-во строк матрицы\n";
  42.                 cout << "5. Изменить кол-во столбцов матрицы\n";
  43.                 cout << "6. Узнать кол-во строк матрицы\n";
  44.                 cout << "7. Узнать кол-во столбцов матрицы\n";
  45.                 cout << "0. Выход\n";
  46.                 cin >> ch;
  47.                 switch(ch)
  48.                 {
  49.                 case 1:
  50.                         output_matrix_screen(matrix, line, column);
  51.                         break;
  52.                 case 2:
  53.                         set_element(matrix, line, column);
  54.                         break;
  55.                 case 3:
  56.                         element_info(matrix, line, column);
  57.                         break;
  58.                 case 4:
  59.                         matrix_line(matrix, line, column);
  60.                         break;
  61.                 case 5:
  62.                         matrix_column(matrix, line, column);
  63.                         break;
  64.                 case 6:
  65.                         info_line(matrix, line, column);
  66.                         break;
  67.                 case 7:
  68.                         info_column(matrix, line, column);
  69.                         break;
  70.                 case 0:
  71.                         return 0;
  72.                 default:
  73.                         cout << "Ошибка! Такой операции нет!\n";
  74.                 }
  75.  
  76.         }
  77. }
  78.  
  79. int input_matrix(int **&m, int &l, int &c)
  80. {
  81.         ifstream in("C:\\Users\\Nikita\\Documents\\Visual Studio 2010\\Projects\\kursovaya\\Release\\matrix"); // Открываем файл с матрицей
  82.         if (!in)
  83.         {
  84.                 cout << "Не удается открыть файл matrix\n";
  85.                 return 1;
  86.         }
  87.         in >> l; // Получаем кол-во строк
  88.         in >> c; // Получаем кол-во столбцов
  89.         m = new int *[l]; // Выделение памяти
  90.         for (int i=0; i<l; i++)
  91.                 m[i] = new int [c];
  92.         for (int i=0; i<l; i++)
  93.         {
  94.                 for (int j=0; j<c; j++)
  95.                 {
  96.                         in >> m[i][j];
  97.                 }
  98.         }
  99.         in.close();
  100.         return 0;
  101. }
  102.  
  103. int output_matrix_file(int **&matrix, int line, int column)
  104. {
  105.         return 0;
  106. }
  107.  
  108. int output_matrix_screen(int **matrix, int l, int c)
  109. {
  110.     system("cls");
  111.     cout << "Матрица:\n";
  112.         for (int i=0; i<l; i++)
  113.         {
  114.                 for (int j=0; j<c; j++)
  115.                 {
  116.                         cout << matrix[i][j] << " ";
  117.                 }
  118.                 cout << "\n";
  119.         }
  120.         cout <<l << " строк и " << c << " столбцов\n\n";
  121.  
  122.         return 0;
  123. }
  124.  
  125. int set_element(int **matrix, int line, int column)
  126. {
  127.     system("cls"); // Очистка экрана
  128.     int i, j, a;
  129.     cout << "Введи индексы элемента:\n";
  130.     cout << "i = ";
  131.     cin >> i;
  132.     system("cls");
  133.     cout << "Введи индексы элемента:\n" << "i = " << i <<"\nj = ";
  134.     cin >> j;
  135.     cout << "Элемент с этими индексами: " << matrix[i-1][j-1] << "\n";
  136.     cout << "Значение, для замены: ";
  137.     cin >> a;
  138.     matrix[i-1][j-1] = a;
  139.     return 0;
  140. }
  141.  
  142. int element_info(int **matrix, int line, int column)
  143. {
  144.     system("cls"); // Очистка экрана
  145.     int i, j;
  146.     cout << "Введи индексы элемента:\n";
  147.     cout << "i = ";
  148.     cin >> i;
  149.     system("cls");
  150.     cout << "Введи индексы элемента:\n" << "i = " << i <<"\nj = ";
  151.     cin >> j;
  152.     cout << "Элемент с этими индексами: " << matrix[i-1][j-1] << "\n\n";
  153.     return 0;
  154. }
  155.  
  156. int matrix_line(int **matrix, int line, int column)
  157. {
  158.     int l;
  159.     system("cls");
  160.     cout << "Сейчас " << line << " строк.\n\n";
  161.     cout << "Строк должно быть: ";
  162.     cin >> l;
  163.     if(l==line)
  164.     {
  165.         cout << "Сейчас их как раз " << line;
  166.         cout << "Строк должно быть: ";
  167.         cin >> l;
  168.     }
  169.     else if(l<line)
  170.     {
  171.     }
  172.     else if(l>line)
  173.     {
  174.         int **new_matrix = new int *[l];
  175.         for (int i=0; i<l; i++)
  176.             new_matrix[i] = new int [column];
  177.         for (int i=0; i<line; i++)
  178.         {
  179.             for (int j=0; j<column; j++)
  180.             {
  181.                 new_matrix[i][j]=matrix[i][j];
  182.             }
  183.         }
  184.         for (int i = line; i<l; i++)
  185.         {
  186.             for (int j=0; j<column; j++)
  187.             {
  188.                 new_matrix[i][j]=0;
  189.             }
  190.         }
  191.         int c = column;
  192.         delete_matrix(matrix, line, column);
  193.         ofstream out ("C:\\Users\\Nikita\\Documents\\Visual Studio 2010\\Projects\\kursovaya\\Release\\matrix");
  194.         if (!out)
  195.         {
  196.                 cout << "Не удается открыть файл matrix\n";
  197.                 return 1;
  198.         }
  199.         out << l <<"\n" << c << "\n";
  200.         for (int i=0; i<l; i++)
  201.         {
  202.             for (int j=0; j<c; j++)
  203.             {
  204.                 out << new_matrix[i][j] << " ";
  205.             }
  206.             out << "\n";
  207.         }
  208.     delete_matrix(new_matrix, l, c);
  209.     out.close();
  210.     input_matrix(matrix, line, column);
  211.     }
  212.     return 0;
  213. }
  214.  
  215. int matrix_column(int **matrix, int line, int column)
  216. {
  217.         cout <<"7\n";
  218.         return 0;
  219. }
  220.  
  221. int info_line(int **matrix, int line, int column)
  222. {
  223.     system("cls");
  224.     cout <<"Сейчас " << line << " строк.\n\n";
  225.     return 0;
  226. }
  227.  
  228. int info_column(int **matrix, int line, int column)
  229. {
  230.     system("cls");
  231.     cout <<"Сейчас " << column << " столбцов.\n\n";
  232.     return 0;
  233. }
  234.  
  235. int delete_matrix(int **&matrix, int line, int column)
  236. {
  237.         for (int i=0; i<line; i++)// Освобождение памяти
  238.         {
  239.                 delete []matrix[i];
  240.         }
  241.         delete []matrix;
  242.         return 0;
  243. }
Advertisement
Add Comment
Please, Sign In to add comment