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;
}