Ciao ragazzi vi chiedo aiuto per questo esercizio che a voi risulterà banale ma non riesco a risolvere in maniera ottimale.
il testo prevede:
Scrivere un programma in linguaggio C che:
• legga da tastiera le dimensioni di una matrice (m x n) (max m = 20, max n=20)
• la riempia con valori interi positivi pseudorandom minori o uguali a 50
• esamini la matrice, e verifichi se i numeri inseriti nella matrice, compaiono esattamente lo stesso numero di volte se ciò non accade elenchi i numeri presenti nella matrice e quante volte essi appaiono.
Esempio (in grassetto l’input):
3 4
1 5 3 2
3 14 1 2
6 5 14 6
Output:
1 2 3 5 14 compaiono 2 volte nella matrice
Io l'ho risolto così:
codice:
#include <stdio.h>
#define MAXM 20
#define MAXN 20
#define MAX 50
main()
{
int i,j,k,r,c,temp;
int a[MAXM][MAXN];
int conta[MAX]={0};
printf("inserisci il numero di righe : ");
scanf("%d",&r);
printf("\ninserisci il numero di colonne : ");
scanf("%d",&c);
for (i=0; i<r; i++){
for (j=0; j<c; j++){
a[i][j]= (rand()%50)+1;
}
}
for (i=0; i<r; i++){
for (j=0; j<c; j++){
printf("%3d",a[i][j]);
if(j==(c-1))
printf("\n");
}
}
for (i=0; i<r; i++){
for (j=0; j<c; j++){
if (a[i][j]==a[i][j+1] || a[i][j]==a[i+1][j]){
temp=a[i][j];
conta[temp]++;
}
}
}
for (temp=1;temp<MAX;temp++){
if (conta[temp]>0)
printf("%5d compare %d volte nella matrice\n",temp, (conta[temp]+1));
}
getch();
}
Il problema e che non considera l'ultimo ingresso della matrice
Per spiegare meglio cosa intendo ho aggiunto uno screen del programma eseguito:

come vedete funziona eccetto che per l'ultima entrata della matrice, ma non arrivo a capire dov'è l'errore o gli errori.
Sono un pò :berto:
Grazie