Salve mi sn appena iscritto. Vorrei subito sfoderare un programmino che mi è stato richiesto dal mio prof di creare. secondo voi può avere un senso? altrimenti che mi consigliate?
codice:
#include <cstdlib>
#include <iostream>
using namespace std;
// header funzione
float Controlla (double a, double b);
int main(void)
{
// dichiarazione ed inizializzazione precauzionale dei "personaggi"
double n1=0,n2=0;
float perc=0.0;
char answ='n';
// presentazione del programma all'utente
cout << "+------------------------------------------------------------+" << endl << endl;
cout << " Questo programma si propone di calcolare la percentuale di"<< endl;
cout << "''somiglianza'' tra due numeri interi arbitrari. QWERTY group"<< endl << endl;
cout << "+------------------------------------------------------------+"<< endl << endl;
cout << "ATTENZIONE: puoi scrivere qualsiasi numero intero e/o decimale" << endl;
cout << "\t\t ma per i decimali devi usare il punto e non la virgola!" << endl << endl << endl;
do{
// programma
cout << "Inserisci il primo numero: ";
cin >> n1;
cout << endl;
cout << "Inserisci il secondo numero: ";
cin >> n2;
cout << endl;
// analisi
perc = Controlla(n1,n2);
// controllo dell'ordine di grandezza + stampa
if(perc < 0.0001){cout << "La percentuale e' troppo piccola" << endl << endl;}
else{cout << "I due numeri sono simili allo/al: " << perc << "%\n\n";}
// implementazione per + sessioni di gioco
do{
cout << "Vuoi giocare di nuovo? [y/n]: ";
cin >> answ; cout << endl;
}while(answ != 'y' && answ != 'n' && answ != 'Y' && answ != 'N');
}while(answ == 'y' || answ == 'Y');
cout << "Bye Bye! =]" << endl << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
float Controlla (double a, double b)
{
double min=0,max=0;
float perc=0.0,diff=0.0;
// analisi del caso di 2 numeri uguali
if(a==b){perc=100.0;return perc;}
// analisi del caso con lo 0
if((a==0)||(b==0)){
a=a+1;
b=b+1;}
// analisi dei casi negativi
if((a<0) && (b>0)){
a = a*(-1);
if(a<b){max = b;}
else{max = a;}
diff = (float)b + (float)a;
perc = 100.0 - ((diff * 100.0)/(float)max);
if(perc < 0.0){perc = perc*(-1);}
return perc;}
if((b<0) && (a>0)){
b = b*(-1);
if(b<a){max = a;}
else{max = b;}
diff = (float)b + (float)a;
perc = 100.0 - ((diff * 100.0)/(float)max);
if(perc < 0.0){perc = perc*(-1);}
return perc;}
// analisi dei casi standard positivi
if(a<b){min = a;
max = b;
diff = (float)b - (float)a;
perc = 100.0 - ((diff * 100.0)/(float)max);
return perc;}
if(a>b){min = b;
max = a;
diff = (float)a - (float)b;
perc = 100.0 - ((diff * 100.0)/(float)max);
return perc;}
}