xxmarco94 (Normal User)
Rookie
Messaggi: 28
Iscritto: 07/02/2010
|
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
Codice sorgente - presumibilmente C++ |
#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 il 07/02/2010 alle 14:49 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6403
Iscritto: 03/01/2010
|
Beh ... ci sono parecchi errori ...
Gli include devono essere
Codice sorgente - presumibilmente C++ |
#include <windows.h> #include <iostream> #include <cstdlib> #include <cmath>
|
Risultato deve essere double, quindi
Codice sorgente - presumibilmente C/C++ |
Dichiarare pow come char non ha senso ... pow è una funzione di libreria ... quindi
Fare l'input di pow non ha senso ... devi solamente fare l'input dei valori
Codice sorgente - presumibilmente Plain Text |
cin>>valore1;
cin>>valore2;
|
La funzione opera con i double, quindi devi effettuare un cast
Codice sorgente - presumibilmente Plain Text |
risultato=pow((double)valore1, (double)valore2);
|
E per concludere, dato che scelta è una variabile numerica, puoi scrivere semplicemente
Codice sorgente - presumibilmente C/C++ |
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à. |
|
xxmarco94 (Normal User)
Rookie
Messaggi: 28
Iscritto: 07/02/2010
|
ok grazie accetto volentieri il consiglio e grazie per l'aiuto!
|
|
xxmarco94 (Normal User)
Rookie
Messaggi: 28
Iscritto: 07/02/2010
|
io ho provato a modificare come mi è stato detto ed il risutato è questo :
Codice sorgente - presumibilmente C++ |
#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
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6403
Iscritto: 03/01/2010
|
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à. |
|
xxmarco94 (Normal User)
Rookie
Messaggi: 28
Iscritto: 07/02/2010
|
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!
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6403
Iscritto: 03/01/2010
|
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à. |
|
TheKaneB (Member)
Guru^2
Messaggi: 1792
Iscritto: 26/06/2009
|
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
Codice sorgente - presumibilmente C/C++ |
differisce, e anche di molto, da:
Codice sorgente - presumibilmente C/C++ |
Nel primo caso intendiamo il valore numerico 8 espresso in base ottale, nel secondo caso il valore numerico 10 espresso in base decimale.
Achtung! |
|
nessuno (Normal User)
Guru^2
Messaggi: 6403
Iscritto: 03/01/2010
|
Postato originariamente da TheKaneB:
Lo 0 in più non è superfluo, ma peggio! E' un errore abbastanza subdolo! |
Se ne sarebbe accorto il compilatore appena avesse scritto 07 oppure 08, 09 ... per quelli precedenti non c'è problema ... ma, in generale, la tua osservazione è corretta.
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à. |
|