Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <iostream>
- #include <conio.h>
- #include <clocale>
- #include <fstream>
- using namespace std;
- int menu(int**&, int&, int&); // Меню программы
- int input_matrix(int**&, int &, int &); // Создание матрицы из данных файла
- int output_matrix_file(int**&, int, int); // Вывод матрицы в файл
- int output_matrix_screen(int**, int, int); // Вывод матрицы на экран
- int set_element(int**, int, int); // Установка значения элемента с заданными индексами
- int element_info(int**, int, int); // Вывод значения элемента с заданными индексами
- int matrix_line(int**, int, int); // Изменение кол-ва строк матрицы
- int matrix_column(int**, int, int); // Изменение кол-ва столбцов матрицы
- int info_line(int**, int, int); // Вывод кол-ва строк
- int info_column(int**, int, int); // Вывод кол-ва столбцов
- int delete_matrix(int**&, int, int); // Очистка памяти
- int main()
- {
- setlocale(LC_ALL, "Russian");
- int **matrix, line, column;
- input_matrix(matrix, line, column);
- menu(matrix, line, column);
- delete_matrix(matrix, line, column);
- _getch();
- return 0;
- }
- int menu(int **&matrix, int &line, int &column)
- {
- int ch;
- for(;;)
- {
- cout << "Введи что ты хочешь сделать:\n";
- cout << "1. Вывести матрицу\n";
- cout << "2. Установить значение элементу\n";
- cout << "3. Узнать значение элемента\n";
- cout << "4. Изменить кол-во строк матрицы\n";
- cout << "5. Изменить кол-во столбцов матрицы\n";
- cout << "6. Узнать кол-во строк матрицы\n";
- cout << "7. Узнать кол-во столбцов матрицы\n";
- cout << "0. Выход\n";
- cin >> ch;
- switch(ch)
- {
- case 1:
- output_matrix_screen(matrix, line, column);
- break;
- case 2:
- set_element(matrix, line, column);
- break;
- case 3:
- element_info(matrix, line, column);
- break;
- case 4:
- matrix_line(matrix, line, column);
- break;
- case 5:
- matrix_column(matrix, line, column);
- break;
- case 6:
- info_line(matrix, line, column);
- break;
- case 7:
- info_column(matrix, line, column);
- break;
- case 0:
- return 0;
- default:
- cout << "Ошибка! Такой операции нет!\n";
- }
- }
- }
- int input_matrix(int **&m, int &l, int &c)
- {
- ifstream in("C:\\Users\\Nikita\\Documents\\Visual Studio 2010\\Projects\\kursovaya\\Release\\matrix"); // Открываем файл с матрицей
- if (!in)
- {
- cout << "Не удается открыть файл matrix\n";
- return 1;
- }
- in >> l; // Получаем кол-во строк
- in >> c; // Получаем кол-во столбцов
- m = new int *[l]; // Выделение памяти
- for (int i=0; i<l; i++)
- m[i] = new int [c];
- for (int i=0; i<l; i++)
- {
- for (int j=0; j<c; j++)
- {
- in >> m[i][j];
- }
- }
- in.close();
- return 0;
- }
- int output_matrix_file(int **&matrix, int line, int column)
- {
- return 0;
- }
- int output_matrix_screen(int **matrix, int l, int c)
- {
- system("cls");
- cout << "Матрица:\n";
- for (int i=0; i<l; i++)
- {
- for (int j=0; j<c; j++)
- {
- cout << matrix[i][j] << " ";
- }
- cout << "\n";
- }
- cout <<l << " строк и " << c << " столбцов\n\n";
- return 0;
- }
- int set_element(int **matrix, int line, int column)
- {
- system("cls"); // Очистка экрана
- int i, j, a;
- cout << "Введи индексы элемента:\n";
- cout << "i = ";
- cin >> i;
- system("cls");
- cout << "Введи индексы элемента:\n" << "i = " << i <<"\nj = ";
- cin >> j;
- cout << "Элемент с этими индексами: " << matrix[i-1][j-1] << "\n";
- cout << "Значение, для замены: ";
- cin >> a;
- matrix[i-1][j-1] = a;
- return 0;
- }
- int element_info(int **matrix, int line, int column)
- {
- system("cls"); // Очистка экрана
- int i, j;
- cout << "Введи индексы элемента:\n";
- cout << "i = ";
- cin >> i;
- system("cls");
- cout << "Введи индексы элемента:\n" << "i = " << i <<"\nj = ";
- cin >> j;
- cout << "Элемент с этими индексами: " << matrix[i-1][j-1] << "\n\n";
- return 0;
- }
- int matrix_line(int **matrix, int line, int column)
- {
- int l;
- system("cls");
- cout << "Сейчас " << line << " строк.\n\n";
- cout << "Строк должно быть: ";
- cin >> l;
- if(l==line)
- {
- cout << "Сейчас их как раз " << line;
- cout << "Строк должно быть: ";
- cin >> l;
- }
- else if(l<line)
- {
- }
- else if(l>line)
- {
- int **new_matrix = new int *[l];
- for (int i=0; i<l; i++)
- new_matrix[i] = new int [column];
- for (int i=0; i<line; i++)
- {
- for (int j=0; j<column; j++)
- {
- new_matrix[i][j]=matrix[i][j];
- }
- }
- for (int i = line; i<l; i++)
- {
- for (int j=0; j<column; j++)
- {
- new_matrix[i][j]=0;
- }
- }
- int c = column;
- delete_matrix(matrix, line, column);
- ofstream out ("C:\\Users\\Nikita\\Documents\\Visual Studio 2010\\Projects\\kursovaya\\Release\\matrix");
- if (!out)
- {
- cout << "Не удается открыть файл matrix\n";
- return 1;
- }
- out << l <<"\n" << c << "\n";
- for (int i=0; i<l; i++)
- {
- for (int j=0; j<c; j++)
- {
- out << new_matrix[i][j] << " ";
- }
- out << "\n";
- }
- delete_matrix(new_matrix, l, c);
- out.close();
- input_matrix(matrix, line, column);
- }
- return 0;
- }
- int matrix_column(int **matrix, int line, int column)
- {
- cout <<"7\n";
- return 0;
- }
- int info_line(int **matrix, int line, int column)
- {
- system("cls");
- cout <<"Сейчас " << line << " строк.\n\n";
- return 0;
- }
- int info_column(int **matrix, int line, int column)
- {
- system("cls");
- cout <<"Сейчас " << column << " столбцов.\n\n";
- return 0;
- }
- int delete_matrix(int **&matrix, int line, int column)
- {
- for (int i=0; i<line; i++)// Освобождение памяти
- {
- delete []matrix[i];
- }
- delete []matrix;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment