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.

    Ant idea carina! 😀 Una precisazione, per il numero Pi Greco (va bene dichiararlo manualmente per avere più cifre decimali a disposizione anziché includerlo tramite M_PI della libreria math.h), ovviamente anziché PI=3,14159265358979323846; occorre scrivere PI=3.14159265358979323846;. A livello di codice, il separatore decimale è il punto, non la virgola! In genere per convenzione trattandosi di una costante, anziché dichiararlo come variabile (tra l'altro, casomai meglio un double anziché float, dato che ti interessa grande accuratezza decimale), la strada più comunemente usata è quella di dichiararlo come costante, tramite direttiva ovvero: #define PI 3.14159265358979323846.
    Comunque sia, idea carina!

    Powered by: FreeFlarum.
    (remove this footer)