Parentesi errore che non comprendo

Ho scritto questo codice ma non capisco perchè ogni volta che inserisco una parentesi quella successiva nonostante secondo lo switch non debba essere considerata ritorna -1.

    int controlla(int N, char E[]) {
    char prec=E[0];
    if(N%2!=0) return -1;
    for(int i=0;i<N-1;i++){
    prec=E[i];
    switch(prec){
    case '<':if (E[i+1]=='}'||E[i+1]==')'||E[i+1]==']') return -1;
    case '(':if (E[i+1]=='}'||E[i+1]==']'||E[i+1]=='>') return -1;
    case '{':if (E[i+1]==')'||E[i+1]==']'||E[i+1]=='>') return -1;
    case '[':if (E[i+1]=='}'||E[i+1]==')'||E[i+1]=='>') return -1;
    }
    }
    return 0;
    }

Grazie in anticipo

Ti sei dimenticato i break, forse è quello.

1 Mi Piace

Ciao,
ho controllato il tuo codice ed effetivamente la funzione ritornava -1 anche se doveva ritornare 0.
Ho provato a mettere dei break alla fine dei case e adesso la funzione ritorna il risulato corretto…

//ECCO IL CODICE
int controlla(int N, char E[]) {
char prec=E[0];
if(N%2!=0) return -1;
for(int i=0;i<N-1;i++){
prec=E[i];
switch(prec){
case ‘<’:if (E[i+1]==’}’||E[i+1]==’)’||E[i+1]==’]’) return -1;break;
case ‘(’:if (E[i+1]==’}’||E[i+1]==’]’||E[i+1]==’>’) return -1;break;
case ‘{’:if (E[i+1]==’)’||E[i+1]==’]’||E[i+1]==’>’) return -1;break;
case ‘[’:if (E[i+1]==’}’||E[i+1]==’)’||E[i+1]==’>’) return -1;break;
}
}
return 0;
}

2 Mi Piace

Ho sottoposto e mi da errore del server, appena si sistema dovrebbe andare grazie.