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:
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?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; }
Ringrazio in anticipo ed attendo risposte esaustivea presto!


a presto!
Rispondi quotando