Ciao oggi ho creato questa calcolatrice con c++, possiede vari calcoli oltre alle semplici operazioni, come la radice quadrata, le funzioni trigonometriche e le potenze.
Questa è la versione 2.0 della calcolatrice, la versione 1 non la ho pubblicata, ma aveva solo radici e operazioni di base.
C'è la possibilità di scegliere se chiudere o continuare a calcolare, dopo ogni calcolo verrà chiesto infatti l'opzione di uscita: con 0 esci, con 1 continui.
#include <iostream>
#include <cstdio>
#include <math.h>
using namespace std;
int main () {
int uscita,fun;
float a,b,x,PI,base,esp;
char op,rad,c;
uscita=1;
PI=3,14159265358979323846;
while (uscita==1)
{
cout<<"RADICE,OPERAZIONI,TRIGONOMETRIA,POTENZA"<<endl;
cout<<"r=radice"<<endl<<"o=operazione"<<endl<<"t=trigonometria"<<endl<<"p=potenza"<<endl;
cin>>c;
if (c=='r') //radice
{
cout<<"inserisci un numero"<<endl;
cin>>a;
if (a>=0)
cout<<sqrt(a)<<endl;
else
cout<<"OPERAZIONE INESISTENTE"<<endl;
cout<<"Uscire?"<<endl;
cout<<"0=Esci"<<endl;
cout<<"1=Continua"<<endl;
cin>>uscita;
}
else if (c=='o') //operazioni
{
cout<<"Inserisci 2 numeri"<<endl;
cin>>a;
cin>>b;
cout<<"Inserisci l'operazione"<<endl;
cout<<"+=SOMMA | -=DIFFERENZA"<<endl;
cout<<"*=PRODOTTO | /=DIVISIONE"<<endl;
cin>>op;
switch (op)
{
case '+':
cout<<a+b<<endl;
break;
case '-':
cout<<a-b<<endl;
break;
case '*':
cout<<a*b<<endl;
break;
case '/':
cout<<a/b<<endl;
break;
default:
cout<<"OPERAZIONE INESISTENTE"<<endl;
break;
}
cout<<"Uscire?"<<endl;
cout<<"0=Esci"<<endl;
cout<<"1=Continua"<<endl;
cin>>uscita;
}
else if (c=='t') //trigonometria
{
cout<<"Coseno=1 |Coseno(-1)=4"<<endl;
cout<<"Seno=2 |Seno(-1)=5"<<endl;
cout<<"Tangente=3 |Tangente(-1)=6"<<endl;
cin>>fun;
switch (fun)
{
case 1:
{
cout<<"Inserisci un angolo (RADIANTI!)"<<endl;
cin>>x;
cout<<"Risultato="<<cos(x)<<endl;
break;
}
case 2:
{
cout<<"Inserisci un angolo (RADIANTI!)"<<endl;
cin>>x;
cout<<"Risultato="<<sin(x)<<endl;
break;
}
case 3:
{
cout<<"Inserisci un angolo (RADIANTI!)"<<endl;
cin>>x;
cout<<"Risultato="<<tan(x)<<endl;
break;
}
case 4:
{
cout<<"Inserisci il valore"<<endl;
cin>>x;
cout<<"Risultato 1="<<acos(x)<<endl;
cout<<"Risultato 2="<<-acos(x)<<endl;
break;
}
case 5:
{
cout<<"Inserisci il valore"<<endl;
cin>>x;
cout<<"Risultato 1="<<asin(x)<<endl;
cout<<"Risultato 2="<<PI-asin(x)<<endl;
break;
}
case 6:
{
cout<<"Inserisci il valore"<<endl;
cin>>x;
cout<<"Risultato 1="<<atan(x)<<endl;
cout<<"Risultato 2="<<PI+atan(x)<<endl;
break;
}
default:
{
cout<<"OPERAZIONE INESISTENTE"<<endl;
}
}
cout<<"Uscire?"<<endl;
cout<<"0=Esci"<<endl;
cout<<"1=Continua"<<endl;
cin>>uscita;
}
else if (c=='p') //potenza
{
cout<<"Inserisci la base"<<endl;
cin>>base;
cout<<"Inserisci l'esponente"<<endl;
cin>>esp;
cout<<pow(base,esp)<<endl;
cout<<"Uscire?"<<endl;
cout<<"0=Esci"<<endl;
cout<<"1=Continua"<<endl;
cin>>uscita;
}
}
return 0;
}
Il programma è tutto dentro un while, che si esegue solo se la variabile uscita è uguale a 1, infatti se alla fine del calcolo premiamo 0, il programma uscirà dal ciclo e terminerà.
Ci viene chiesto l'operazione da fare:
-r per radice
-o per operazione
-t per trigonometria
-p per potenza
La scelta che decidiamo di fare verrà caricata nella variabile "c"
Si apre una serie di if ed else if, in base al tasto che premiamo ci rindirizza ai calcoli opportuni.
Nota: viene usata la libreria math.h
RADICE:
-C'è un if, se il numero è >= 0 allora calcola la radice, altrimenti da errore.
OPERAZIONE:
-Funziona con switch: chiediamo 2 numeri e la relativa operazione, in caso di operazione inesistente, viene mandato errore. In input vengono presi +, -, *, / (somma, differenza, prodotto, divisione)
TRIGONOMETRIA:
-Anche qui c'è uno switch, ma occorre fare una differenza tra funzioni inverse e base.
Quelle base chiedono il valore in radianti dell'angolo, e danno seno, coseno o tangente (in base alla scelta)
Quelle inverse danno 2 risultati, infatti la normale funzione inversa si limita a metà circonferenza, per ottenere l'altra metà:
Seno: Facciamo : pi greco-risultato
Coseno: Facciamo :-(risultato)
Tangente: Facciamo : pi greco + risultato.
IL PI GRECO E' STATO ARROTONDATO A 20 CIFRE DOPO LA VIRGOLA!!!
POTENZA:
-Chiesto base ed esponente, calcola la potenza usando il comando pow.
Ho intenzione di fare anche una versione 3.0 della calcolatrice, implementando anche la risoluzione di scomposizioni con delta.