Programma frequenza occorrenza matrice in un nuovo vettore

di il
6 risposte

Programma frequenza occorrenza matrice in un nuovo vettore

Salve a tutti,
mi trovo di nuovo a chiedere il vostro aiuto. Ho un esercizio che mi chiede: data una matrice trovare la frequenza di occorrenza degli elementi e per ogni elemento scriverla in un nuovo vettore.
Il mio ragionamento è questo:
gli elementi della matrice li copio inizialmente in un vettore(perchè per me è più facile lavorarci) poi dal vettore mi trovo la frequenza di occorrenza di ciascun elemento e la copio nel vettore richiesto, il programma che ho scritto è quello che segue. Dopo aver stampato il vettore degli elementi copiati dalla matrice mi da errore. Non riesco a capire che cosa ho sbagliato. Qualcuno può aiutarmi? R
ringrazio anticipatamente.



#include <iostream>

using namespace std;

void copia_mat_vet(int M[][30],int& r, int& c, int v[], int n);
void scrivi_mat(int M[][30],int& r, int& c);
void freq(int v[], int& r, int& c, int f[], int k);



int i,j;
int main() {
    int n,r,c; int M1[30][30], v1[30]; int f[30]; int k;
     
    scrivi_mat(M1,r,c);
    copia_mat_vet(M1,r,c,v1,n);
    freq(v1,r,c,f,k);
  
   
    return 0;
}

void scrivi_mat(int M[][30],int& r, int& c)
{
    
    cout<<"inserisci il numero di righe";
    cin>>r;
    cout<<"inserisci il numero di colonne";
    cin>>c;
    cout<<"inserisci gli elementi della mtrice"<<endl;
    for(i=0;i<r;i++)
        for(j=0;j<c;j++)
        {   cout<<"M["<<i<<"]["<<j<<"]= ";
            cin>>M[i][j];
        }
    cout<<"la matrice è: "<<endl;
     for(i=0;i<r;i++){
       for(j=0;j<c;j++){
            cout<<M[i][j];
        }cout<<endl;} 
    
    
    
}

void copia_mat_vet(int M[][30],int& r, int& c, int v[], int n)
{ 
    n=0;
    for(i=0;i<r;i++){
        for(j=0;j<c;j++){
          v[n]=M[i][j];
          n++;
        }}
    for(i=0;i<n;i++)
    {
        cout<<v[i];
        
    }cout<<endl;



}

void freq(int v[], int& r, int& c, int f[], int k)
{

    int cont ,n; 
    k=0;
    for(i=0;i<n-1;i++)
    {    cont=0; 
        for(j=i+1;j<n;j++){
            if(v[i]==v[j])
            {
                cont++;
            }
    }
    f[k]=cont; k++;
    }
      cout<<endl;
   
}

6 Risposte

Devi accedere o registrarti per scrivere nel forum
6 risposte