edutecnica

Esercizio 6        

Scrivere un programma C++ cha acquisita una stringa memorizzi tutte le parole in essa contenute in un array di stringhe.


Anche in questo caso si è preferito usare il carattere "_" invece che lo spazio " ", per migliorare la visualizzazione dello stato della stringa.
La stringa in ingresso viene processata per eliminare gli spazi superflui, come si è gia visto nell'esercizio precedente. In output viene riportato la posizione degli spazi residui memorizzato nel vettore V.

#include<iostream>
#include<string>
using namespace std;
main(){
 string s="__La_nebbia__agli___irti_colli___pioviginando___sale__",sub;
 int i=0,j=0,c=1;
 bool trovato;
 int V[100]={0};

 while(i<s.size()){
   trovato=false;
   if(s[i]=='_' && s[i+1]=='_'){s.erase(i,1);trovato=true;}
   if(trovato==false)i++;
 }//fine while
 if(s[0]=='_')s.erase(0,1);
 if(s[s.size()-1]=='_')s.erase(s.size()-1,1);
 cout << s<<endl;
 j=0;
 for(i=0;i<s.size();i++)
   if(s[i]=='_'){
     c++;
     V[j]=i;
     j++;
   }
 cout<<"\nparole:"<<c<<endl;
 j=0;
 while(V[j]!=0){cout<<" "<<V[j];j++;}
 string T[c];
 sub=s.substr(0,V[0]);T[0]=sub;// 1°elemento
 j=1;i=1;
 while(j<c){
   sub=s.substr(V[j-1]+1,V[j]-V[j-1]-1);
   T[j]=sub;
   j++;
 }v  for(i=0;i<c;i++)cout<<endl<<T[i];
} //fine main

La stringa verrà poi splittata usando il metodo substr() per memorizzare le singole parole nel vettore di stringhe T. Per una implementazione concreta usare il carattere " " al posto di "_".