salve non riesco a risolvere questo esercizio in C. l esercizio mi chiede di creare una matrice, e fino a qui ci siamo, e poi di rilevare il numero che si presenta il maggior numero di volte. mi potreste aiutare? Mi sono bloccato. grazie.
salve non riesco a risolvere questo esercizio in C. l esercizio mi chiede di creare una matrice, e fino a qui ci siamo, e poi di rilevare il numero che si presenta il maggior numero di volte. mi potreste aiutare? Mi sono bloccato. grazie.
prova almeno a buttar giù due righe di codice
ciao
sergio
ciao sergio io ho scritto solo il riempimento della matrice e la visualizzazione, ho cercato di comparare cn un ciclo for a[i][j] con a[i+1][j+1] ed assegnarlo ad una variabile
for(i=0; i<3; i++)
for(j=0; j<3; j++)
{
if(a[i][j]==a[i+1][j+1])
temp=a[i][j];
}
ma c è qualkosa che nn va.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j;
int a[3][3];
// Riempimento matrice
for(i=0; i<3; i++)
for(j=0; j<3; j++)
{
printf("inserisci num. riga %d colonna %d: ", i,j);
scanf(" %d", &a[i][j]);
}
//Visualizzazione matrice
for(i=0; i<3; i++)
{
printf("\n");
for(j=0; j<3; j++)
printf("%5d ",a[i][j]);
printf("\n");
}
system("PAUSE");
return 0;
}
studiati questa, tra le soluzioni possibili
codice:#include <stdio.h> #include <stdlib.h> int main() { unsigned int i, j; unsigned int a[][3] = { {11, 2, 3}, {4, 2, 6}, {4, 2, 5} }; size_t dim_a =sizeof ( a ) / sizeof (a[0][0]); //Visualizzazione matrice for( i = 0; i < 3; i++) { printf("\n"); for(j=0; j<3; j++) printf("%5d ",a[i][j]); printf("\n"); } /* normalmente un contatore come quello che vuoi realizzare utilizza gli alberi binari. Qui utilizziamo un metodo un po' meno efficiente che va bene solo per piccole matrici */ /* definiamo una seconda matrice che un numero di righe uguale alla dimensione della prima matrice e due colonne. Nella prima colonna mettiamo gli elementi della prima matrice nella seconda il numero di occorrenze. -1 rappresenta la fine matrice */ /* legge tutta la matrice e per ogni elemento scorre la matrice dei confronti per verificare se l'elemento già esiste */ unsigned int matrice_confronti[ dim_a ][2] ; size_t dim_mat_confr = sizeof (matrice_confronti) / sizeof (matrice_confronti[0][0]) / 2 ; // inizializzazione for( i = 0; i < dim_mat_confr; i++) { matrice_confronti[i][0] = -1; matrice_confronti[i][1] = 0 ; } for( i = 0; i < 3; i++ ) { for( j = 0; j < 3; j++ ) { unsigned int el = a[i][j]; unsigned int k = 0; while ( matrice_confronti[k][0] != -1 ) if ( matrice_confronti[k][0] == el ) break; else k++; if ( matrice_confronti[k][0] == -1 ) matrice_confronti[k][0] = el ; matrice_confronti[k][1] += 1 ; } } //Visualizzazione la matrice dei confronti unsigned int k = 0; while ( matrice_confronti[k][0] != -1 ) { printf("%d %d \n",matrice_confronti[k][0], matrice_confronti[k][1]); k++; } return ( 0 ) ; }
anch'io cerco di postarti una soluzione applicabile con piccole matrici (usa le strutture non so se le hai studiate):
codice:#include <stdio.h> #include <stdlib.h> #define Y 3 #define X 4 struct contatore { int valore; int presenze; }; int main() { int matrice[Y][X]={3, 6, 2, 6, 5, 2, 2, 4, 7, 3, 5, 1}; struct contatore[Y*X]; int limite=0, migliore=0, i, j, k; /*Qui puoi mettere una funzione che visualizzi la matrice*/ for(i=0; i<Y; i++) { for(j=0; j<X; j++) { for(k=0; k<=limite; k++) { if(k==limite) { contatore[limite].valore=matrice[i][j]; contatore[limite].presenze=1; limite++; break; } if(contatore[k].valore==matrice[i][j]) { contatore[k].presenze++; break; } } } } /* Questa funzione ha uno svantaggio: nel caso di valori con le stesse presenze se ne visualizza solo uno, ma la si può migliorare */ for(i=0; i<limite; i++); { if(contatore[migliore].valore<contatore[i].valore) { migliore=i; } } printf("Il numero con il maggio numero di presenze e': %d\n", contatore[migliore].valore); system("PAUSE"); return 0; }
printf("Programmazione in C!");
cout<<"Programmazione in C++!";
ritiro la mia, non volevo confonderti ho frainteso le tue consegno
ciao
sergio
grazir di tutto. proverò a vedere se riesco. ancora grazie.