Oppure

Loading
07/02/10 12:40
xxmarco94
Ciao a tutti. io mi sono appena avvicinato al c++ (ho cominciato ieri sera) ed ho provato a creare una calcolatrice. Finchè utilizzavo solo le operazioni base tutto andava bene funzionava alla perfezione. Il problema è sorto quando ho provato ad aggiungere le potenze. Ho letto che si deve usare la funzione pow() ed ho provato ad usarla ma non funziona mi dice che "il termine non restituisce una funzione che accetta 2 argomenti".

Il mio codice sorgente è questo


#include <iostream>
#include <windows.h>
#include <stdlib.h>
using namespace std;

int main(){
	HANDLE hConsole;							//Colora il
	hConsole = GetStdHandle(STD_OUTPUT_HANDLE);	//testo in
	SetConsoleTextAttribute (hConsole, 10);		//verde.
	int valore1, valore2, scelta;
	float risultato;
	char operazione, pow;
	
	do {
		system("cls");//Serve cancellare i numeri ed i risultati.
		cout<<"       ___---CALCOLATRICE---___"<<endl;
		cout<<"___---Creata da xxMarco94 in C++---___"<<endl;
		cout<<endl<<endl<<"01->Operazione normali";
		cout<<endl<<"02->Potenze";
		cout<<endl<<"03->Esci";
		cout<<endl<<endl<<"Cosa scegli?";cin>>scelta;

		if (scelta==01){
			cout<<endl<<"Scrivi l'operazione da eseguire:  ";cin>>valore1;cin>>operazione;cin>>valore2;
			switch(operazione){//Serve per scegliere l'operatore dell'operazione.
				case'+':
					risultato=valore1+valore2;
					cout<<endl<<"Risultato:"<<risultato<<endl<<"Premi un tasto per cancellare.";
					system("pause>nul");
				break;
				case'-':
					risultato=valore1-valore2;
					cout<<endl<<"Risultato:"<<risultato<<endl<<"Premi un tasto per cancellare.";
					system("pause>nul");
				break;
				case'*':
					risultato=valore1*valore2;
					cout<<endl<<"Risultato:"<<risultato<<endl<<"Premi un tasto per cancellare.";
					system("pause>nul");
				break;
				case'/':
					risultato=valore1/valore2;
					cout<<endl<<"Risultato:"<<risultato<<endl<<"Premi un tasto per cancellare.";
					system("pause>nul");
					break;}
			}
		if (scelta==02){
			cout<<endl<<"Scrivi il numero (a) e la sua potenza(b)(a^b):  ";cin>>valore1;cin>>pow;cin>>valore2;
			risultato=pow(valore1, valore2);
			cout<<endl<<"Risultato:  "<<risultato<<endl<<"Premi un tasto per continuare.";
			system ("pause=nul");
		}
		}while(scelta!=03);
	return 0;
	}



POTETE AIUTARMI?

EDIT by HeDo: Il codice va racchiuso tra i tag code
Ultima modifica effettuata da HeDo 07/02/10 13:49
aaa
07/02/10 13:08
nessuno
Beh ... ci sono parecchi errori ...

Gli include devono essere
#include <windows.h>
#include <iostream>
#include <cstdlib>
#include <cmath>


Risultato deve essere double, quindi

	double risultato;


Dichiarare pow come char non ha senso ... pow è una funzione di libreria ... quindi

    char operazione;

    
Fare l'input di pow non ha senso ... devi solamente fare l'input dei valori

cin>>valore1;
cin>>valore2;


La funzione opera con i double, quindi devi effettuare un cast

			risultato=pow((double)valore1, (double)valore2);


E per concludere, dato che scelta è una variabile numerica, puoi scrivere semplicemente

if (scelta==1){ 


e così per le altre if ... lo zero in piu' è superfluo ...

Se qualcosa non ti e' chiaro, forse devi studiare un po' di piu' la teoria, prima di scrivere qualsiasi programma ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
07/02/10 19:57
xxmarco94
ok grazie accetto volentieri il consiglio e grazie per l'aiuto!
aaa
07/02/10 20:21
xxmarco94
io ho provato a modificare come mi è stato detto ed il risutato è questo :

#include <windows.h>
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;

int main(){
	HANDLE hConsole;							//Colora il
	hConsole = GetStdHandle(STD_OUTPUT_HANDLE);	//testo in
	SetConsoleTextAttribute (hConsole, 10);		//verde.
	
	int valore1, valore2, scelta;
	double risultato;
	char operazione;
	
	do {
		system("cls");//Serve cancellare i numeri ed i risultati.
		cout<<"       ___---CALCOLATRICE---___"<<endl;
		cout<<"___---Creata da xxMarco94 in C++---___"<<endl;
		cout<<endl<<endl<<"01->Operazione normali";
		cout<<endl<<"02->Potenze";
		cout<<endl<<"03->Esci";
		cout<<endl<<endl<<"Cosa scegli?  ";cin>>scelta;

		if (scelta==01){
			cout<<endl<<"Scrivi l'operazione da eseguire:  ";cin>>valore1;cin>>operazione;cin>>valore2;
			switch(operazione){//Serve per scegliere l'operatore dell'operazione.
				case'+':
					risultato=valore1+valore2;
					cout<<endl<<"Risultato:  "<<risultato<<endl<<"Premi un tasto per cancellare.";
					system("pause>nul");
				break;
				case'-':
					risultato=valore1-valore2;
					cout<<endl<<"Risultato:"<<risultato<<endl<<"Premi un tasto per cancellare.";
					system("pause>nul");
				break;
				case'*':
					risultato=valore1*valore2;
					cout<<endl<<"Risultato:"<<risultato<<endl<<"Premi un tasto per cancellare.";
					system("pause>nul");
				break;
				case'/':
					risultato=valore1/valore2;
					cout<<endl<<"Risultato:"<<risultato<<endl<<"Premi un tasto per cancellare.";
					system("pause>nul");
					break;}
			}
		if (scelta==02){
			cout<<endl<<"Scrivi il numero (a) e la sua potenza(b)(a^b):  ";cin >> valore1; cin >> valore2; 
			risultato = pow((double)valore1, (double)valore2);			
			cout<<endl<<"Risultato:  "<<risultato<<endl<<"Premi un tasto per cancellare.";
			system ("pause=nul");
		}
		}while(scelta!=03);
	return 0;
	}


però non funziona ancora. Mi sa che questa colcolatrice proprio non si vuole fare
aaa
07/02/10 20:52
nessuno
Se non dici esattamente qual è il problema ...

Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
07/02/10 21:58
xxmarco94
non c'è più nessun problema sono riuscito a risolvere e una volta risolte le potenze sopno anche riuscito a mettere le radici
cmq grazie dell'interessamento e dell'aiuto!
aaa
08/02/10 0:23
nessuno
Meglio cosi' ... ciao
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
08/02/10 10:46
TheKaneB
Postato originariamente da nessuno:

[...]

e così per le altre if ... lo zero in piu' è superfluo ...


Lo 0 in più non è superfluo, ma peggio! E' un errore abbastanza subdolo!
in C, e di riflesso anche in C++, una costante numerica preceduta da 0 (zero) è considerata come espressa in base ottale.
Quindi

if (scelta == 010)

differisce, e anche di molto, da:
if (scelta == 10)

Nel primo caso intendiamo il valore numerico 8 espresso in base ottale, nel secondo caso il valore numerico 10 espresso in base decimale.

Achtung!
aaa