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