Salve a tutti,
sono un nuovo utente appena registrato

Vi volevo porre un quesito..Sto provando a scrivere un programma in C (è un esercizio del mio parziale all'uni) e ho un problema nel registrare in sequenza i dati immessi dall'utente..Mi spiego..

Il codice è questo:

codice:
#include <stdio.h>

int Prodotti;

int optionals(int n, char op[][7]);
int optional_s(int n, int p, char op[][7]);

int main(void)
{
    printf("Inserisci il numero di prodotti\n");
    scanf("%d",&Prodotti);

    double alt_larg[Prodotti][2];
    int colore[Prodotti];
    char optional[Prodotti][7];
    int crit_a=0, crit_b=0, crit_c=0, t1_crit_c, t2_crit_c, i = 0, j, bassi=0, aster=0;

    for(; i < Prodotti; i++)
    {
        printf("Inserisci le caratteristiche dell oggetto\n"); /*QUI!!*/ 
        scanf("%lf %lf %d %s", &alt_larg[i][0], &alt_larg[i][1], &colore[i], &optional[i]);
        printf("\n");
    }

    i=0;

    for (; i < Prodotti; i++)
    {
        t1_crit_c=0;
        t2_crit_c=0;
        j=0;
        if ((optionals(i,optional) <= 2) || ((colore[i] == 2) && ((optionals(i,optional) >= 2) || (optional_s(4,i,optional)))))
            break;

        for(; j < Prodotti; j++)
        {
            if ((alt_larg[j][0] < alt_larg[i][0]) && (optionals(j,optional) >= 2))
                bassi++;

            if (alt_larg[j][0] < alt_larg[i][0])
                t1_crit_c++;

            if (alt_larg[j][1] > alt_larg[i][1])
                t2_crit_c++;
        }

        if (bassi >= 3) {aster=1; continue;}

        if ((t1_crit_c <= 2) && (t2_crit_c >= 3))
            crit_c++;

        if ((optionals(i,optional) >= 3) && ((colore[i] == 3) || (colore[i] == 5)))
            crit_a++;

        if (((alt_larg[i][0] < alt_larg[i][1]) && (optional_s(2,i,optional))) || ((optionals(i,optional) <= 2) && (colore[i] == 2)))
            crit_b++;
    }

    if ((crit_a <= 4) || (crit_b <= 4) || (crit_c <= 4))
        printf("OK");
    else
        printf("KO");

    if (aster==1)
        printf("***");
}

int optionals(int n, char op[][7])
{
    int i = 0, j = 0;
    for(; i < 7; i++)
    {
        if(op[n][i] == 'y')
            j++;
    }
    return j;
}

int optional_s(int n, int p, char op[][7])
{
    int k, j;
    k = n == 1 ? 1 : (2*n)-1;
    j = op[p][k] == 'y' ? 1 : 0;
    return j;
}
nel punto dove ho segnato con il commento in rosso c'è un loop che dovrebbe registrare le caratteristiche di ogni oggetto inserito, uno per volta..ma quando inserisco i dati del primo oggetto il loop non si ferma ad ogni singolo oggetto ma scorre e termina..perchè? ho fatto qualche errore?

Ringrazio in anticipo ed attendo risposte esaustive a presto!