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");
    }
}