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ì:
Il problema e che non considera l'ultimo ingresso della matricecodice:#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(); }
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


Rispondi quotando