[C] Conta delle decine e unità con matrice

di il
2 risposte

[C] Conta delle decine e unità con matrice

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

2 Risposte

  • Re: [C] Conta delle decine e unità con matrice

    Ciao!! allora alle funzioni analizza decine e analizza unità non devi passare come parametro la dimmat bensì la dim (dimensione del vettore).
    Altrimenti per forza di cose si andranno a leggere celle del vettore che non sono state inizializzate e il programma smette di funzionare:)

    in poche parole modifica così le due righe relative
    analizza_unita(mat, vet1, dim);
        analizza_decine(mat, vet1, dim);
  • Re: [C] Conta delle decine e unità con matrice

    mikykey ha scritto:


    Ciao!! allora alle funzioni analizza decine e analizza unità non devi passare come parametro la dimmat bensì la dim (dimensione del vettore).
    Altrimenti per forza di cose si andranno a leggere celle del vettore che non sono state inizializzate e il programma smette di funzionare:)

    in poche parole modifica così le due righe relative
    analizza_unita(mat, vet1, dim);
        analizza_decine(mat, vet1, dim);
    Grazie infinite!
Devi accedere o registrarti per scrivere nel forum
2 risposte