PDA

Visualizza la versione completa : Problema Pow c++


tommyz94
27-11-2013, 21:22
buonasera a tutti, sono nuovo e questo è il mio primo post, scusate se sbaglio qualcosa, comunque avrei da risolvere questo esercizio, ma mi trovo bloccato per colpa della funzione Pow, mi dice "pow cannot be used as a function"... :/ premetto che non posso usare la funzione atoi, ma devo per forza convertire la char in int... posto anche il mio tentativo di sorgente, grazie mille :)


Scrivere un programma che legga una stringa (max 20 car.) rappresentante una costante intera
(eventualmente con segno '-', ma non contenente spazi) e, se la sequenza è sintatticamente corretta,
memorizzare il corrispondente numero intero in una variabile di tipo int e visualizzarlo; altrimenti
visualizzare un opportuno messaggio.
N.B. Si richiede di memorizzare e trattare la stringa letta come una stringa “tipo C”.
SUGG. Si ricordi che se c e' un carattere che rappresenta una cifra decimale, l'intero c-48
corrisponde al valore numerico della cifra.
Esempi d'uso
-
Sintassi errata
(N.B. Il segno '-' può trovarsi soltanto nella prima posizione della stringa e deve essere seguito da almeno
una cifra)
-1.2
Sintassi errata
- 22
Sintassi errata
12
Il numero immesso e': 12
-23
Il numero immesso e': -23



questo è il mio tentativo, premetto che mancano anche le segnalazioni di errore, grazie ancora! :)




#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
int main()
{int x, y,i,j=10;
char A[21], c;
float pow, z;
cout<<"Dammi la stringa da convertire.(senza immettere spazi, preceduta dal segno - se negativa)."<<endl;
cin>>A;
cout<<endl;
y=strlen(A);
cout<<"La lunghezza della stringa immessa è di "<<y<<"caratteri"<<endl;


if(A[0]=='-')
{{for(int i=y;i>0;i--)
{x=0;
z= pow(float j, float (i-1.0));
x=((A[i]-48)*z)+x;
}}
x=x*-1;
}
if (A[i]>='0' && A[i]<=9)
{{for(int i=y;i>=0;i--)
{x=0;
z=1*pow(j, i);
x=((A[i]-48)*z)+x;
}}


cout<<"la stringa immessa convertita in intero è "<<x<<endl;


cout<<"L'intero equivalente è "<<x<<endl; }
system("PAUSE");
return 0;
}

oregon
27-11-2013, 21:32
Scusa ma perché vuoi utilizzare una variabile che si chiama pow

float pow, z;

e perché usi la funzione così

z= pow(float j, float (i-1.0));

??

P.S. E' meglio usare i tag CODE per il codice altrimenti si fa fatica ...
P.P.S. Hai scritto due volte il messaggio ...

tommyz94
27-11-2013, 21:36
Sinceramente non ne ho idea, ho postato uno dei miei mille tentativi, proprio non so come saltarci fuori... Oooops scusate per il doppio messaggio!:/

oregon
27-11-2013, 21:41
Scusa ... il problema di questo tuo thread è il messaggio d'errore della pow? Ti ho suggerito cosa rivedere per rimediare *a quel problema*.

Fatto questo, se il tuo programma funziona è un altro problema.

Quindi, controlla quello che ti ho indicato ... non puoi "non avere idea" di quello che hai scritto.

tommyz94
28-11-2013, 06:17
E in che modo lo posso rivedere? Io ci ho provato a rivederla, ma non ho idea di come si usa la pow, su internet avevo letto che andaa dichiarata come float, e ho provato sia in un modo che nell'altro, o letto di dichiarare i suoi elemnti come float e ho provato ij entrambi i modi, è un casino....:/ scusate la mia ignoranza, ma nessuno mi ha mai insegnato ad usare la libreria cmath, e mi son trovato un po in crisi...

maluz1
28-11-2013, 07:02
Nella dichiarazione delle variabili: float pow, z; Cambia il nome di pow con un altro( un qualsiasi nome che non riporti a una funzione).

Loading