Salve, ho un programma con il quale l'utente inserirà 3 lettere (a,b,c) e verranno messe in ordine alfabetico. Ho inserito il convertitore da maiuscole a minuscole, così da portarle allo stesso "piano". Ed ho impedito l'inserimento di "caratteri speciali".
Ora mi chiedo, c'è un modo per semplificare il tutto? Per richiedere meno memoria al computer, insomma, se si puo' fare meglio, anche rendendo possibile l'inserimento di una sequenza ben piu lunga di lettere, senza utilizzare mille variabili... ed un bel while semplice semplice
Ecco il codice per intero:
/*
Esercizio 1.18
Realizzare un programma che legge da input tre caratteri, e li stampa in ordine alfabetico.
*/
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <time.h>
#include <conio.h>
#include <windows.h>
#include <stdio.h>
#include <math.h>
using namespace std;
char a,b,c;
char continua[2];
int main ()
{
cout<<"Inserisci 3 lettere, distinguile con un'accapo, io te le metterò in ordine alfabetico\n";
do{
cin>>a;cin>>b;cin>>c;
if(((a>=65)&&(a<=90)||(a>=97)&&(a<=122))&&((b>=65)&&(b<=90)||(b>=97)&&(b<=122))&&((c>=65)&&(c<=90)||(c>=97)&&(c<=122)))
{
//Convertitore lettere maiuscole in minuscole
if((a>=65)&&(a<=90))
a+=32;
if((b>=65)&&(b<=90))
b+=32;
if((c>=65)&&(c<=90))
c+=32;
//Il convertitore ha lavorato :)
//Condizione per l'ordinamento alfabetico delle 3 lettere
if((a<b)&&(a<c)&&(b<c)) //Se a è minore tra tutti e tre i numeri
cout<<a<<b<<c<<endl;
else if((a>b)&&(a>c)&&(b>c)) //Se a è maggiore tra tutti e b minore di c
cout<<c<<b<<a<<endl;
else if((a>b)&&(a>c)&&(b>c)) //Se a è maggiore tra tutti e b maggiore di c
cout<<b<<c<<a<<endl;
else if((a<b)&&(a>c)) //Se a è minore di b ma maggiore di c
cout<<c<<a<<b<<endl;
else if((a>b)&&(a<c)) //Se a è maggiore di b e minore di c
cout<<b<<a<<c<<endl;
else //Altrimenti (se a è minore di b e c e b è maggiore di c)
cout<<a<<c<<b<<endl;
}
else
cout<<"Solo lettere, non caratteri speciali!\n";
cout<<"Vuoi ripetere?(y/n)\n";
cin>>continua;
cin.clear();
}while(strcmp (continua,"y")==0);
//cin.get();
return 1;
system("pause");
return 0;
}