Получить массив присвоив его k-му элементу значение 0, если все элементы k-го столбца матрицы нулевые.

Условие задачиЗадана  матрица  размером  NхM.  Получить  массив  B, присвоив  его  k-му элементу  значение 0,  если  все  элементы  k-го  столбца матрицы  нулевые,  и значение 1 – в противном случае.

 

Листинг (исходник) программы:


	#include <iostream>
	#include <locale>
	#include <conio.h>
	#include <time.h>
	using namespace std;
	
	
	void createMassivB( bool* Arr, int j, bool flag)
	{
	    Arr[j] = flag;
	}
	
	
	int main()
	{
	    setlocale(LC_ALL,"Russian");
	    int n(0),m(0);
	    cout<<"Введите размеррность матрицы: ";cin>> n >> m;
	    cout<<endl;
	
	
	    int** Mass = new int* [n]; // Объявление динамического массива
	    for(int i=0; i<n; i++)
	        Mass[i] = new int [m];
	
	
	    srand((int)time(0));
	    for(int i=0; i<n; i++)
	        for(int j=0; j<m; j++)
	            Mass[i][j] = rand()%5; //Присваивание значений элементам матрицы
	
	
	    cout << "Исходная матрица: " << endl << endl;
	    for(int i(0); i<n; i++)//Вывод исходной матрицы
	        for(int j=0; j<m; j++)
	            if(j==m-1)
	                cout << Mass[i][j] << \' \' << endl;
	            else 
	                cout << Mass[i][j] << \' \';
	
	
	    bool* MassB = new bool [m]; // Объявление динамического массива в виде булевой маске
	
	
	    for(int j=0; j<m; j++)// Истинные значения по всем массиве
	        for(int i=0; i<n; i++)
	            MassB[j] = true; 
	
	
	    bool flag = false;
	    for(int j=0; j<m; j++) // Присваиванием булевому массива значения столбца с нулями
	    {
	        for(int i=0; i<n; i++)
	        {
	            if( Mass[i][j] == 0 && (flag == false ))
	                createMassivB(MassB, j, false);
	
	
	            else if( Mass[i][j] == 0 && (flag == true ))
	                createMassivB(MassB, j, true);
	
	
	            else if( Mass[i][j] != 0 )
	            {
	                flag = false;
	                createMassivB(MassB, j, true);
	                break;
	            }
	        }
	        flag = false;
	    }
	
	
	    cout<<endl;
	    for(int j=0; j<m; j++)
	    {
	        if(j==m-1)//
	            cout << MassB[j] << \' \' << endl;
	        else 
	            cout << MassB[j] << \' \';
	    }
	
	
	    for(int j=0; j<n; j++)
	        delete Mass[j];
	    delete Mass;
	    delete MassB;
	    _getch();
	    return 0;
	}
	
	

 

[свернуть]

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *