Ho provato a svolgere il seguente esercizio:
scrivere una funzione ricorsiva che ricevuta una stringa verifichi se essa è formata da due tasselli uguali. Esempio: "caracara", "ciaociao", "cici"...mentre sono diversi ad esempio in: "caracasa", "ciaocia" ecc...
Sembra funzionare se sostituisco if(strcmp(S[i],S[j])!=0) con if(S[i]!=S[j])codice:#include <iostream> #include <cstring> using namespace std; bool tasselliuguali(char *S, int n, int i, int j); int main(){ int n=4; int i=0, j=n; char S[]={"ciaociao"}; if(tasselliuguali(S,n,i,j)) cout<<"ok"<<endl; else cout<<"no"<<endl; system("pause"); return 0; } bool tasselliuguali(char *S, int n, int i, int j){ if(strlen(S)% n != 0) return false; if(i >=n-1 && j >= n+n) return true; if(strcmp(S[i],S[j])!=0) //cosi non funzione ma se faccio if(S[i]!=S[j]) SI! return false; return tasselliuguali(S, n, ++i, ++j); }
come mai?? Non dovrebbero essere equivalenti? strcmp dovrebbe restituire 0 se le due stringhe sono uguali...e 1 o -1 se sono diverse vero?cosa sbaglio?

Rispondi quotando