Негосударственное образовательное учреждение
Блок-схема
#include "stdafx.h" #include<iostream>//подключение к библиотеке ввода/вывода в стиле С++ using namespace std;//подключение стандартного пространства имён
int main()//главная функция { //Создание матрицы int i, j, N, **A;//А-матрица, N- размерность матрицы, i-номер строки, j-номер столбца; cout << "N= "; cin >> N;//ввод размерности матрицы //Создание двумерного динамического массива матрицы при помощи двойных указателей //Выделение памяти для массива А, каждый элемент массива - указатель на int A = new int *[N]; for (i = 0; i < N; i++) { //Выделение памяти для каждого элемента А[i], A[i] адресует N элементов типа int A[i] = new int [N]; } cout << "Input matrix A" << endl; //цикл по переменной i, в котором перебирием строки матрицы for (i = 0; i < N; i++) { //цикл по переменной j, в котором перебираем элементы внутри строки for (j = 0; j < N; j++) { cin >> A[i][j];//ввод очередного элемента матрицы } } cout << "matrix A" << endl;//вывод на экран всей матрицы //цикл по переменной i, в котором перебираем строки матрицы for (i = 0; i < N; i++) { for (j = 0; j < N; j++) cout << A[i][j] << "\t";//вывод очередного элемента матрицы cout << endl;//переход на новую строку после вывода всех элементов строки }
int kol1, kol2;//kol1- количество нулей в i строке, kol2- количество нулей в j столбце; //создание одномерных динамических массивов int *zRow = new int [N]; int *zColumn = new int [N]; //найдём кол-во нудей в каждой строке cout << "zRow" << endl; for (i = 0; i < N; i++) { kol1 = 0; for (j = 0; j < N; j++) { if (A[i][j] == 0) { kol1 = kol1 + 1; }//if }//for zRow[i] = kol1; cout << zRow[i] << "\t";//вывод на экран кол-ва нулей в i строке }//for cout << endl;
//найдём кол-во нулей в каждом столбце cout << "zColumn" << endl; for (j = 0; j < N; j++) { kol2 = 0; for (i = 0; i < N; i++) { if (A[i][j] == 0) { kol2 = kol2 + 1; }//if }//for zColumn[j] = kol2; cout << zColumn[j] << "\t";//вывод на экран кол-ва нулей в j столбце }//for cout << endl; // найти пары на главной и побочной диагоналях cout << "Pairs"<<endl; for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { if (zColumn[j] == zRow[i] && zColumn[j]!= 0) { //вывод на экран строки элемента главной диагонали и столбца элемента побочной диагонали cout << "Coordinate of elements: " << i << " " << j << endl; //вывод на экран элемента главной диагонали и элемента побочной диагонали cout << "Element of main diagonal: " << A[i][i]; cout << "Element of secondary diagonal: "<<A[N - j - 1][j]<< endl; }//if }//for }//for
//освобождение памяти для одномерных массивов delete[] zRow; delete[] zColumn; //освобождение памяти для каждого элемента A[i] for (i = 0; i < N; i++) delete [] A[i]; //освобождение памяти для А delete []A;
system("pause"); return 0; } Негосударственное образовательное учреждение
|