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