Newsgroup: it.comp.lang.c++
Titolo: Come faccio a convertire un singolo char in numero

Ho provato a creare un programma che ricevendo un numero in cifre me lo da
in uscito scritto in lettere, solo che non so come convertire un singolo
char (per esempio '5' in 5 numero intero). Leggendo gli errori che mi da il
compilatore credo che il problema sia solo quello, per sicurezza vi allego
il programma e i messaggi del compilatore:
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
int main(){
 char *decu[]={"zero", "uno", "due", "tre", "quattro", "cinque", "sei",
"sette", "otto", "nove", "dieci", "undici", "dodici", "tredici",
"quattordici", "quindici", "sedici", "diciassette", "diciotto",
"diciannove"};
 char *dec[]={"venti", "trenta", "quaranta", "cinquanta", "sessanta",
"settanta", "ottanta", "novanta"};
 char *cent[]={"", "cento", "ducento", "trecento", "quattrocento",
"cinquecento", "seicento", "settecento", "ottocento", "novecento"};
 char *migl[]={"mille", "duemila", "tremila", "quattromila", "cinquemila",
"seimila", "settemila", "novemila", "diecimila"};
 char numero[5], numfin[50], primus[3];
 int p1, p2, p3, p4, i;
 cout << "inserisci numero di 4 cifre: " << endl;
 cin >> numero;
 primus[0]=numero[2];
 primus[1]=numero[3];
 p4=atoi(numero[0]);
 p3=atoi(numero[1]);
 for (i=0; migl[p4][i]!='\0'; i++){
  numfin[i]=migl[p4][i];
 }
 for (int j=0; cent[p3][j]!='\0'; i++, j++){
  numfin[i]=cent[p3][j];
 }
 p1=atoi(primus);
 if (p1<20){
  for (int z=0; decu[p1][z]!='\0'; z++, i++){
   numfin[i]=decu[p1][z];
  }
 }else  {
   p2=atoi(numero[2]);
   p1=atoi(numero[3]);
   for (int h=0; dec[p2-2][h]!='\0'; h++, i++){
    numfin[i]=dec[p2-2][h];
   }
   for (int f=0; decu[p1][f]!='\0'; f++, i++){
    numfin[i]=decu[p1][f];
   }
 }
    cout << numfin << endl;
 return 0;
}
Compiling...
numpar.cpp
D:\Cpp\numpar\numpar.cpp(20) : error C2664: 'atoi' : cannot convert
parameter 1 from 'char' to 'const char *'
        Conversion from integral type to pointer type requires
reinterpret_cast, C-style cast or function-style cast
D:\Cpp\numpar\numpar.cpp(21) : error C2664: 'atoi' : cannot convert
parameter 1 from 'char' to 'const char *'
        Conversion from integral type to pointer type requires
reinterpret_cast, C-style cast or function-style cast
D:\Cpp\numpar\numpar.cpp(38) : error C2664: 'atoi' : cannot convert
parameter 1 from 'char' to 'const char *'
        Conversion from integral type to pointer type requires
reinterpret_cast, C-style cast or function-style cast
D:\Cpp\numpar\numpar.cpp(39) : error C2664: 'atoi' : cannot convert
parameter 1 from 'char' to 'const char *'
        Conversion from integral type to pointer type requires
reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.
numpar.obj - 4 error(s), 0 warning(s)

  p4=atoi(numero[0]);
atoi prende un stringa, non un carattere. Se devi convertire un solo 
carattere, allora puoi fare cosě:
p4=numero[2]-'0';
Saluti
-- 
Per l'e-mail rimuovere la frase in maiuscolo e gli underscore.

 ha scritto nel messaggio
news:uoSob.78790$e5.29...@news1.tin.it...


 
http://www.geocities.com/SiliconValley/Sector/3453/math01.html
1)#include <iostream.h>
#inlcude <iostream>
2)void main()
Č sbagliato anche se compila lo stesso: main ritorna un int.
3)Se dopo ogni operazione di input con cin non flushi lo stream, ti 
salta la successiva chiamata.
4)Il prog non controlla se gli siano dati in input caratteri che non 
rappresentino cifre
5)Non sarebbe stato piů comodo con stringstream?
6)Non c'entra 1a mazza con quel che ha chiesto Piotre Ugrumov.
