Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>//stream(istream(cin,ifstream), ostream(cout,ofstream))
- #include<fstream>//ifstream ofstraem
- #include<iomanip>//setw()
- #include<string>
- using namespace std;
- int** newMatrix(istream& in, int& n, int& m);
- void printMatrix(ostream& out, int** A, int n, int m);
- void clearMatrix(int**& A, int n);
- extern "C" {
- int haracteristic(int** A, int n, int m);
- void preobrazovanie(int** A, int n, int m);
- }
- int ShowMenu() {
- int punktMenu;
- system("cls");
- cout << "1. Ввод матрицы с клавиатуры " << endl;
- cout << "2. Ввод матрицы с файла " << endl;
- cout << "3. Печать матрицы " << endl;
- cout << "4. Характеристика " << endl;//В матрице существует столбец, все элементы которого удвоенные нечетные числа.
- cout << "5. Преобразование матрицы " << endl;//Получить новую матрицу В, элемент bij которой равен сумме элемента aij исходной матрицы и максимума j столбца.
- cout << "6. Выход " << endl;
- cout << "Введите пункт меню : ";
- cin >> punktMenu;
- cin.ignore(2, '\n');
- return punktMenu;
- }
- int main() {
- setlocale(LC_ALL, "");
- string nameFile;
- int** matrix = nullptr;
- int** matrix2 = nullptr;
- int n, m;
- bool isInputMatrix = false;
- int selectPunkt = 0;
- while (selectPunkt != 7) {
- selectPunkt = ShowMenu();
- switch (selectPunkt) {
- case 1: {
- if (isInputMatrix) {
- clearMatrix(matrix, n);
- isInputMatrix = false;
- }
- cout << "Введите размеры матрицы и матрицу " << endl;
- matrix = newMatrix(cin, n, m);
- isInputMatrix = true;
- cout << "Успешно прочитано" << endl;
- break;
- }
- case 2: {
- if (isInputMatrix) {
- clearMatrix(matrix, n);
- isInputMatrix = false;
- }
- cout << "Input file name :";
- //cin >> nameFile;
- getline(cin, nameFile);
- ifstream inFile(nameFile);
- if (!inFile.is_open()) {
- cout << "Ошибка открытия файла " << endl;
- break;
- }
- matrix = newMatrix(inFile, n, m);
- matrix2 = newMatrix(inFile, n, m);
- inFile.close();
- isInputMatrix = true;
- cout << "Матрица введена" << endl;
- break;
- }
- case 3: {
- if (!isInputMatrix) {
- cout << "Матрица не введена, используйте пункты 1 или 2" << endl;
- break;
- }
- printMatrix(cout, matrix, n, m);
- break;
- }
- case 4: {
- if (!isInputMatrix) {
- cout << "Матрица не введена, используйте пункты 1 или 2" << endl;
- break;
- }
- if (haracteristic(matrix, n, m) == 1)
- {
- cout << "Характеистика выполняется" << endl;
- }
- else cout << "Характеистика не выполняется" << endl;
- //cout << "Допиши код!!!" << endl;
- break;
- }
- case 5: {
- if (!isInputMatrix) {
- cout << "Матрица не введена, используйте пункты 1 или 2" << endl;
- break;
- }
- preobrazovanie(matrix, n, m);
- cout << "Преобразование выполнено" << endl;
- break;
- }
- case 6: break;
- default: {
- cout << "Ай-ай-ай, такого пункта в меню нет!!!" << endl;
- }
- }
- system("pause");
- }
- if (isInputMatrix)
- clearMatrix(matrix, n);
- system("pause");
- return 0;
- }
- int** newMatrix(istream& in, int& n, int& m)
- {
- in >> n >> m;
- int** a = new int* [n + 1];
- a[n] = new int[n * m];
- for (int i = 0; i < n; i++) {
- a[i] = &a[n][i * m];
- }
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < m; j++) {
- in >> a[i][j];
- }
- }
- return a;
- }
- void printMatrix(ostream& out, int** A, int n, int m)
- {
- if (&out != &cout) {
- out << n << " " << m << endl;
- }
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < m; j++) {
- out << setw(5) << A[i][j];
- }
- out << endl;
- }
- }
- void clearMatrix(int**& A, int n)
- {
- delete[]A[n];
- delete[]A;
- A = nullptr;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement