PDA

Visualizza la versione completa : [C] Calcolare l'elemento piu frequente di una matrice


dolores1013
21-09-2007, 19:52
in linguaggio c


/*come si fa a calcolare l' elemento piu frequente di una matrice generica
m x n di nome mat ?*/


// ho provato cosi:
for(i=0; i<m; i++)
for(j=0;j<=n;j++){
for (k=0;k<=m;k++)
for(t=0;t<=n;t++)
if (mat[i][j]==mat[k][t])
g++;
if(g>max){
max=g;
x=mat[i][j];
}
g=0;
}

dove sbaglio?

dolores1013
22-09-2007, 00:18
il prog in linguaggio c. Nessuno capisce cosa ho sbagliato?

BLACKGORDON
22-09-2007, 10:26
Prova questa(magari funziona):

max=0;
for(i=0; i<m; i++)
for(j=0;j<n;j++){
if(m[i][j]>max)max=m[i][j];
}/*for i*/
} /*for j*/
max ha adesso valore=massimo tra tutti gli elementi della matrice.

dolores1013
22-09-2007, 10:47
niente da fare il blooshed dev mi da questo errore
invalid types `int[int]' for array subscript

BLACKGORDON
22-09-2007, 10:49
Allora bisognerebbe vedere come fatto il codice.

dolores1013
22-09-2007, 10:52
forse ho sbagliato a scrivere la printf :

printf("\n\n l'elemento piu frequente e': \n");
printf("%4d ", x);

oregon
22-09-2007, 10:55
Scusa dolores, ma stai facendo un sacco di confusione ... perche' non posti *tutto* il codice, compresi gli include, la dichiarazione del main, la dichiarazione di tutte le variabili e dell'array ...?

@BLACKGORDON
L'elemento piu' frequente di una matrice non e' il suo massimo ...

BLACKGORDON
22-09-2007, 11:05
Vero!Scusatemi misto confondendo anch'io...

dolores1013
22-09-2007, 11:22
questo il codice:


include<stdio.h>
#include<stdlib.h>

#define MAXRIGHE 100
#define MAXCOLONNE 100


int mat[MAXRIGHE] [MAXCOLONNE];

main()
{
int n, m, i, j;
int k, t;
int g=0, max=0, x=0;

//richiesta delle dimensioni
do {
printf("\nNumero di righe: ");
scanf("%d", &n);
}
while((n>=MAXRIGHE) || (n<1));

do {
printf("\nNumero di colonne: ");
scanf("%d", &m);
}
while((m>=MAXCOLONNE) || (m<1));

//caricamento matrici
printf("\n\n Caricamento della prima matrice \n\n");
for(i=0; i<m; i++)
for(j=0; j<n; j++) {
printf("inserisci riga %d colonna %d val:", i, j);
scanf("%d", &mat[i][j]);
};

// visualizzazione matrice
printf("\n\n La matrice e': \n");
for(i=0; i<m; i++) {
for(j=0; j<n; j++)
printf("%5d ", mat[i][j]);
printf("\n");
}

//calcolo elemento piu frequente
for(i=0; i<m; i++)
for(j=0;j<=n;j++){
for (k=0;k<=m;k++)
for(t=0;t<=n;t++)
if (mat[i][j]==mat[k][t])
g++;
if(g>max){
max=g;
x=mat[i][j];
}
g=0;
}

//visualizzazione elemento piu frequente
printf("\n\n l'elemento piu frequente e': \n");
printf("%4d ", x);


system("PAUSE");


}

oregon
22-09-2007, 11:31
Intanto devi togliere tutti i segni = dal controllo dei cicli, altrimenti eccedi nell'indice della matrice ... Deve essere

for(i=0; i<m; i++)

for(j=0; j<n; j++)

for(k=0; k<m; k++)

for(t=0; t<n; t++)

Per il resto, non ho fatto altre prove ...

Loading