Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <iostream>
- #include <locale.h>
- using namespace std;
- const int row = 10, col = 20;
- void inp_array_2(int x[][col], int n, int m)
- {
- cout << "Введите " << n * m << " чисел" << endl;
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- cin >> x[i][j];
- }
- }
- }
- void out_array_2(int x[][col], int n, int m)
- {
- cout << "Массив чисел" << endl;
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- cout.width(5);
- cout << x[i][j] << ' ';
- }
- cout << endl;
- }
- }
- void index_max(int x[][col], int n, int m, int &imax, int &jmax) {
- imax = 0; jmax = 0;
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < m; j++) {
- if (x[i][j] > x[imax][jmax]) {
- imax = i; jmax = j;
- }
- }
- }
- };
- void change_rows(int x[][col], int n, int m, int i0, int in);
- void change_cols(int x[][col], int n, int m, int i0, int in);
- void del_row(int x[][col], int& n, int m, int idel);//Удалить строку с заданным номером
- void del_row_0(int x[][col], int& n, int m);//Удалить строку с заданным номером
- void insert_row_in_array_2(int x[][col], int &n, int m, int *r, int p);
- void sort_rows(int x[][col] , int n, int m);
- int **create_din_2(int n, int m);
- void inp_array_2(int** x, int n, int m);
- void out_array_2(int** x, int n, int m);
- void del_row(int **x, int& n, int m, int idel);
- int main()
- {
- setlocale(LC_ALL, "rus");
- int a[row][col], n, m;
- cout << "Введите количество строк: ";
- cin >> n;
- cout << "Введите количество элементов в строке: ";
- cin >> m;
- if (n <= 0 || n > row || m <= 0 || m > col)
- {
- cout << "Размеры должны быть >=0 и меньше " << row << " и " << col << endl;
- return 1;
- }
- inp_array_2(a, n, m);
- out_array_2(a, n, m);
- int im, jm;
- index_max(a, n, m, im, jm);
- cout << "Индекс строки с max=" << im << endl;
- cout << "Индекс столбца с max=" << jm << endl;
- cout << "Значение max =" << a[im][jm] << endl;
- //Переставляем местами строки
- change_rows(a, n, m, 0, n - 1);
- out_array_2(a, n, m);
- //Переставляем местами столбцы
- change_cols(a, n, m, 0, m - 1);
- out_array_2(a, n, m);
- //Удаляем строку
- del_row(a, n, m, 2);
- out_array_2(a, n, m);
- //Удалить все нулевые строки
- del_row_0(a, n, m);
- out_array_2(a, n, m);
- //Вставить строку в позициию p
- int p;
- cout << "Введите строку для вставки" << endl;
- cin >> p;
- if (p < 0 || p > n) cout << "Номер строки выходит за индексы строк"; else {
- int *aa = new int[m];
- cout << "Значения для вставляемой строки из " << m << " элементов" << endl;
- for (int j = 0; j < m; j++) cin >> aa[j];
- insert_row_in_array_2(a, n, m, aa, p);
- out_array_2(a, n, m);
- }
- sort_rows(a, n, m);
- out_array_2(a, n, m);
- int** b = create_din_2(n, m);
- inp_array_2(b, n, m);
- out_array_2(b, n, m);
- }
- void change_rows(int x[][col], int n, int m, int i0, int in) {
- int temp;
- for (int j = 0; j < m; j++) {
- temp = x[i0][j];
- x[i0][j] = x[in][j];
- x[in][j] = temp;
- }
- }
- void change_cols(int x[][col], int n, int m, int j0, int jm) {
- int temp;
- for (int i = 0; i < n; i++) {
- temp = x[i][j0];
- x[i][j0] = x[i][jm];
- x[i][jm] = temp;
- }
- }
- void del_row(int x[][col], int& n, int m, int idel) {
- if (idel == n - 1) {
- n--; return;
- }
- for (int i = idel; i < n - 1; i++) {
- for (int j = 0; j < m; j++) {
- x[i][j] = x[i + 1][j];
- }
- }
- n--;
- }
- void del_row_0(int x[][col], int& n, int m) {
- int flag;
- for (int i = 0; i < n; i++) {
- flag = 1;//строка из нулей
- for (int j = 0; j < m&&flag; j++) {
- if (x[i][j] != 0) flag = 0;
- }
- if (flag) {
- if (i != n) {
- del_row(x, n, m, i);
- i--;
- }
- }
- }
- }
- void insert_row_in_array_2(int x[][col], int &n, int m, int *r, int p) {
- //сдвиг вниз
- for (int i = n; i >= p; i--) {
- for (int j = 0; j < m; j++) {
- x[i][j] = x[i - 1][j];
- }
- }
- //замена значений p-ой строки новыми значениями
- for (int j = 0; j < m; j++) {
- x[p][j] = r[j];
- }
- n++;
- }
- void sort_rows(int x[][col], int n, int m) {
- for (int j = 1; j < n; j++) {
- for (int i = n - 1; i >= j; i--) {
- if (x[i][0] < x[i - 1][0]) change_rows(x, n, m, i, i - 1);
- }
- }
- }
- int **create_din_2(int n, int m) {
- int **a_2 = new int *[n];
- for (int i = 0; i < n; i++) {
- a_2[i] = new int[m];
- }
- return a_2;
- }
- void inp_array_2(int** x, int n, int m) {
- cout << "Введите " << n * m << " чисел" << endl;
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- cin >> x[i][j];
- }
- }
- }
- void out_array_2(int** x, int n, int m) {
- cout << "Массив чисел" << endl;
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- cout.width(5);
- cout << x[i][j] << ' ';
- }
- cout << endl;
- }
- }
- void del_row(int **x, int& n, int m, int idel) {
- int* p = x[idel];
- if (idel == n - 1) {
- delete []p;
- x = (int **)realloc(x, (n - 1) * 4);
- n--; return;
- }
- delete[]p;
- for (int i = idel; i < n - 1; i++) {
- x[i] = x[i + 1];
- }
- x = (int **)realloc(x, (n - 1) * 4);
- n--;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement