Ciao a tutti , ho alcuni problemi con questo esercizio e non riesco a venirne a capo . In pratica , quando alla fine cerco di stampare l'intero array di stringhe B ,stampa solamente un asterisco .
Qualcuno potrebbe aiutarmi a capire cosa ho sbagliato?
Ecco il testo completo:
Scrivere un metodo che prenda come parametri formali un array di stringhe A e restituisca in outputun array B di m stringhe, dove:
• m è la lunghezza media delle stringhe in A di lunghezza maggiore di 5, e
• la i-esima stringa di B è ottenuta concatenando (m*i) asterischi.
codice:#include<iostream> #include<string> using namespace std; string* output (string strA[], int size){ int cont=0; int c=0; int m; for(int i=0;i<size;i++) { if(strA[i].length()>=5) { cont++; c+=strA[i].length();} } m=c/cont; string *B=new string[m]; string word; for(int i=0;i<m;i++) { for(int j=0;j<=(m*i);j++){ word+='*'; } B[i]=word; } return B; } int main(){ int size; cout<< "Quanto deve essere lungo l'array di stringhe?" <<endl; cin >> size; string strA[size]; cout<<"Scegli le stringhe che devono comporre l'array:"<<endl; for(int i=0; i<size;i++) cin>> strA[i]; cout<< "Array di stringhe"<<endl; for(int i=0; i<size;i++) cout <<strA[i]<<endl; string *B =output(strA,size); cout<<"Array di stringhe in output:"<<endl; for(int i=0;i<B->size();i++) cout<<B[i]<<endl; }

Rispondi quotando