Задана символьная матрица, определить количество различных элементов матрицы (повторяющиеся элементы считать один раз)

Условие задачиЗадана символьная матрица размером NхM. Определить количество различных элементов матрицы (т.е. повторяющиеся элементы считать один раз).

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


	#include <iostream>
	#include <locale>
	#include <stdlib.h>
	#include <conio.h>
	using namespace std;
	
	
	int** Create_array(const int n,const int m);
	void Delete_array(const int n,int** Arr);
	int* Create_number_array(const int n,const int m,int** Arr);
	int Count_different_number(const int n, const int m, int* Array);
	
	
	int main()
	{
	    setlocale(LC_ALL,"Russian");
	    int n(1),m(1),count_elements(0);
	    cout<<"Введите размер массива NхM через пробел: ";    cin>>n>>m;
	
	
	    int** Array = Create_array(n,m);
	    int* New_Array = Create_number_array(n,m,Array);
	
	
	    Delete_array(n,Array);
	    cout<<"\\nКоличество не одинаковых элементов: " << Count_different_number(n,m,New_Array)<<endl;
	
	
	    delete [] New_Array;
	
	
	    _getch();
	    return 0;
	}
	
	
	int** Create_array(const int n,const int m)
	{
	    int** Arr = new int* [n];
	    for(int i(0); i<n; i++)
	        Arr[i] = new int [m];
	
	
	    srand((int)time(0));
	
	
	    for(int i(0); i<n; i++)
	        for(int j(0); j<m; j++)
	            Arr[i][j] = rand() % 100 -51;
	    return Arr;    
	}
	void Delete_array(const int n,int** Arr)
	{
	    for(int i(0); i<n; i++)
	        delete [] Arr[i];
	    delete [] Arr; 
	}
	int* Create_number_array(const int n,const int m,int** Arr)
	{
	    int* All_elements = new int [n*m];
	
	
	    int i(0);
	
	
	    while( i<n*m)
	    {
	        for(int j(0); j<n; j++)
	            for(int k(0); k<m; k++)
	            {
	                All_elements[i] = Arr[j][k];
	                i++;
	            }
	    }
	
	
	    for(int i(0); i<n*m; i++)
	    {
	        for(int j(0); j<n*m; j++)
	        {
	            if(All_elements[i] < All_elements[j])
	                swap(All_elements[i],All_elements[j]);
	        }
	    }
	    return All_elements;
	}
	int Count_different_number(const int n, const int m, int* Array)
	{
	    int Count_Number(0);
	    for(int i(0); i<n*m; i++)
	    {
	        if(!i)
	            Count_Number++;
	        else if(Array[i] != Array[i-1])
	            Count_Number++;
	    }
	    return Count_Number;
	}
	
	
	

 

[свернуть]
 

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

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