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()).