Salve, dovrei scrivere un programma C che verifichi se un albero, rappresentato con una stringa attraverso parentesi tonde, è binario o meno e in caso lo sia scriva a schermo B altrimenti N.
Ho implementato il seguente codice e testandolo ho trovato un caso in cui non funziona, qualcuno mi sa dire dove sia il problema? Grazie!
L'ho testato con i seguenti alberi ottenendo questi risultati:codice:#include <stdio.h> #include <stdlib.h> #include <string.h> char visita(char * s, int i, int n, char b, int c){ while(i<=n&&s[i]!=')'){ if(s[i]=='('){ c = 1; i = i + 1; visita (s, i, n, b, 0); }else{ if(s[i]==')'){ }else{ c = c + 1; } } i = i + 1; } if(c>2) {b = 'N';} return b; } int main(int argc, char *argv[]) { char s[100]; char b = 'B'; int c = 0, n = 0, i = 1; // trasferimento degli argomenti della linea di comando strcpy(s, argv[1]); // calcolo della lunghezza della stringa s n = strlen(s); // chiamata della funzione visita che controlla se l'albero è binario // e stampa del valore di ritorno printf("%c", visita(s, i, n, b, c)); return 0; }
1 B
(12) B
(123) N
(1(23)) B
e fin qui sono giusti, ma per l'albero seguente mi rileva che è Binario quando invece Non lo è.
((12)(1(23)3))

Rispondi quotando