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!
codice:
#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;
}