Ciao ho creato un programma che scompone una serie di numeri inseriti dall'utente e inserisce il numero di volte che si ripetono le decine e le unità... mi spiego un po' meglio.
vettore: 12 13 31 11
matrice: 0 2 1 1 0 0 0 0 0 0 (numero di zeri, uno, due, tre e così via per le unità)
0 3 0 1 0 0 0 0 0 0 (stessa cosa per le decine)
Il mio programma DEVE usare le 4 funzioni che ho inserito e sono loro che mi danno il problema (infatti senza funzioni va benissimo).
Qualcuno riesce a trovare l'errore? Praticamente si blocca dopo aver riempito il vettore (quindi presumo ci sia qualche problema nella funzione successiva).
#include <stdio.h>
#include <stdlib.h>
void leggi_vet1(int vet1[], int dim);
void analizza_unita(int mat[][2], int vet1[], int dimmat);
void analizza_decine(int mat[][2], int vet1[], int dimmat);
void stampa_mat(int mat[][2], int dimmat);
int main()
{
int vet1[40];
int mat[10][2]= {0};
int dim;
int dimmat=10;
do
{
printf("Scegli la dimensione del primo vettore (max 40)\n");
scanf("%d", &dim);
}
while(dim<1 || dim>40);
leggi_vet1(vet1, dim);
analizza_unita(mat, vet1, dimmat);
analizza_decine(mat, vet1, dimmat);
printf("\n");
stampa_mat(mat, dimmat);
return 0;
}
void leggi_vet1(int vet1[], int dim)
{
int i;
for(i=0; i<dim; i++)
{
do
{
printf("Inserisci il valore della posizione %d (min 1, max 99)\n", i+1);
scanf("%d", &vet1[i]);
}
while(vet1[i]<1 || vet1[i]>99);
}
}
void analizza_unita(int mat[][2], int vet1[], int dimmat)
{
int resto;
int i;
for(i=0; i<dimmat; i++)
{
resto=vet1[i]%10;
mat[resto][0]+=1;
}
}
void analizza_decine(int mat[][2], int vet1[], int dimmat)
{
int risultato;
int j;
for(j=0; j<dimmat; j++)
{
risultato=vet1[j]/10;
mat[risultato][1]+=1;
}
}
void stampa_mat(int mat[][2], int dimmat)
{
int i,j;
for(i=0; i<2; i++)
{
for(j=0; j<dimmat; j++)
{
printf("%2d ", mat[j][i]);
}
printf("\n");
}
}