edutecnica

Esercizio 5        

Scrivi un programma C++ nel quale siano eliminati tutti gli spazi superflui all'interno di una stringa.


Usiamo una stringa di test dove al posto degli spazi usiamo il carattere underscore "_" per rendere più efficace la lettura della stringa sui caratteri da eliminare.
Inizialmente, tramite un ciclo while() eliminiamo tutti i caratteri indesiderati all'interno della stringa. Si notano le due istruzioni

if(s[0]=='_') s.erase(0,1);
if(s[s.size()-1]=='_') s.erase(s.size()-1,1);

che eliminano eventuali spazi agli estremi della stringa. Infine la variabile contatore c viene usata per contare le parole all'interno della stringa.

#include<iostream>
#include<string>
using namespace std;
main(){
 string s ("__alfa__beta_____gamma___");
 int i=0,c=1;
 bool trovato;

   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);
 for(i=0;i<s.size();i++)if(s[i]=='_')c++;
 cout << s<<endl;
 cout<<c<<" parole" ;
} //fine main

Se volessimo usare questo algoritmo per eliminare degli spazi basterebbe sostituire nel codice il carattere " " al carattere "_".