edutecnica

Esercizio 3        

Scrivere un algoritmo in C++ che permetta di anagrammare il contenuto di una data stringa con spostamenti di lettere stabiliti dall'utente.


Si usano tre variabili intere per scambiare di posizione ogni volta due lettere.
posi : posizione iniziale (prima lettera).
posf : posizione finale (seconda lettera).
temp : variabile ausiliaria.
Il procedimento può continuare finchè vuole l'utilizzatore.

#include<iostream>
#include<string>
using namespace std;
main(){
 string s;
 int posf,posi,temp;
 char ch;
 cout<<"ins.stringa:";getline(cin,s);
 cout<<s;
 do{
   cout<<"\n procedi?(s/n):";cin>>ch;
   if(ch=='s'){
     do{
       cout<<"pos.iniz: "; cin>>posi;
     }while(posi<0 || posi>=s.size());
     do{
       cout<<"pos.fin: "; cin>>posf;
     }while(posi<0 || posi>=s.size());
     temp=s[posi];
     s[posi]=s[posf];
     s[posf]=temp;
     cout<<endl<<s;
    }//fine if
}while(ch!='n');
} //fine main

L'acquisizione delle due posizioni di scambio viene limitata e circoscritta da due cicli do-while() che continuano a chiedere la posizione se questa non rientra nella lunghezza della stringa (size()).