Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Convertire da array char ad array int
Forum - C/C++ - Convertire da array char ad array int

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
djandry89 (Normal User)
Newbie


Messaggi: 3
Iscritto: 03/02/2011

Segnala al moderatore
Postato alle 16:36
Giovedì, 03/02/2011
Salve a tutti,
sono nuovo del forum e per prima cosa volevo complimentarmi con chi nutre questo spazio così bene, di informazioni utili alla programmazione, in modo molto chiaro ed esauriente.

Sto realizzando un programmino (c++ console) per poter calcolare il CHECK DIGIT dei numeri raccomanda sia a 13 che a 8 cifre. Questi numeri raccomandata possono essere inseriti tramite input tastiera oppure importando un file stream esterno.

Ho fatto in modo che i numeri inseriti vadino a finire all'interno di un array CHAR (in modo da poter far fare l'inserimento da tastiera continuo senza spazi tra loro e su stessa riga). Ora per poter operare con le singole cifre di ogni numero raccomandata (per applicare l'agloritmo), dovrei convertire i dati CHAR in dati INT.

--
Praticamente ecco un esempio:

_numero raccomandata 14158201839 immesso in array CHAR
_1,4,1,5,8,2,0,1,8,3,9 in un array INT per poterne eseguire l'algoritmo con le singole cifre
--

Cosa posso fare?

C'è qualche funzione delle librerie standard di windows applicabile?

Ringrazio anticipatamente e aspetto una soluzione possibilmente :-)

Ultima modifica effettuata da djandry89 il 03/02/2011 alle 16:43
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 17:52
Giovedì, 03/02/2011
Codice sorgente - presumibilmente C/C++

  1. for(int i=0;i<dim_array;i++)
  2.     array_int[i]=array_char[i]-48;//perché facendo array_int[i]=array_char[i], array_int[i] assumerebbe come valore il codice ascii del numero, dato che i numeri nella tabella ascii vanno da 48 a 57, sottraendo 48 trovi il valore numerico


spero di aver colto il problema...

PM Quote
Avatar
carlduke (Member)
Pro


Messaggi: 153
Iscritto: 29/01/2011

Segnala al moderatore
Postato alle 19:36
Giovedì, 03/02/2011
puoi anche fare

Codice sorgente - presumibilmente Plain Text

  1. for(int i = 0;i < dim_array;i++)
  2.   array_int[i] = atoi(&array_char[i]);



devi inludere string.h

PM Quote
Avatar
lumo (Member)
Expert


Messaggi: 449
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 19:58
Giovedì, 03/02/2011
Testo quotato

Postato originariamente da carlduke:

puoi anche fare

Codice sorgente - presumibilmente Plain Text

  1. for(int i = 0;i < dim_array;i++)
  2.   array_int[i] = atoi(&array_char[i]);



devi inludere string.h


non proprio perchè, sebbene in aluni casi funzioni, atoi vuole una stringa, che deve essere terminata da 0... e poi si trova in stdlib.h( cstdlib) non in string.h

PM Quote
Avatar
Pitagora (Member)
Expert


Messaggi: 367
Iscritto: 12/06/2010

Segnala al moderatore
Postato alle 19:59
Giovedì, 03/02/2011
Testo quotato

Postato originariamente da carlduke:
devi inludere string.h



:nono: la funzione atoi() risiede nell'header stdlib.h ;)

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 20:27
Giovedì, 03/02/2011
la funzione atoi serve ad inserire il contenuto di un array di char in una sola variabile di tipo int, per cui se nell'array di char ha {1,2,3} potrà soltanto fare una variabile intera contenente 123, a lui credo serva un'array di interi che sia "uguale" all'array di char, cioè l'array dovrà contenere{1,2,3}...

PM Quote
Avatar
carlduke (Member)
Pro


Messaggi: 153
Iscritto: 29/01/2011

Segnala al moderatore
Postato alle 20:30
Giovedì, 03/02/2011
Testo quotato

Postato originariamente da Pitagora:

Testo quotato

Postato originariamente da carlduke:
devi inludere string.h



:nono: la funzione atoi() risiede nell'header stdlib.h ;)



sisi scusate ho avuto un momento di confusione :_doubt:

PM Quote
Avatar
djandry89 (Normal User)
Newbie


Messaggi: 3
Iscritto: 03/02/2011

Segnala al moderatore
Postato alle 10:59
Venerdì, 04/02/2011
Avevo già provato col metodo macchina:

for(int i=0;i<12;i++){
    vett=vett_temp-48;
}

Ma purtroppo mi da qualche errore di conversione penso.

Ora posto la parte di codice che si occupa della conversione così magari riuscite a capire dove sbaglio :(

NEL MAIN:

"racc_temp"   è l'array char temporaneo per l'inserimento in input
"racc" è l'array int dove devono andare a finire le cifre convertite in INT
"scelta" è una variabile char che mi dice da quante cifre è formato il numero raccomandata

cout<<"Inserisci le 11 cifre della raccomandata: ";
cin.getline (racc_temp,12);
converti(racc_temp,scelta,racc);
cout<<"CHECK DIGIT: "<<calcola_check(racc,check)<<endl<<endl;
stampa_racc(racc,check,scelta); cout<<"-"<<check<<endl<<endl;

FUNZIONE "CONVERTI":

void converti(char vett_temp[], char scelta[], int vett[]){
              for(int i=0;i<12;i++){
                                              vett=vett_temp-48;
                                             }

}

RISULTATO A VIDEO:

Inserisci le 11 cifre della raccomandata: 14158201839
Check Digit: 6
-> 0x22ff10-6

(Ovviamente il Check Digit 6 è errato perchè non mi viene riconosciuto l'INT nelle cifre)

Dove sbaglio????

Ultima modifica effettuata da djandry89 il 04/02/2011 alle 11:03
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 11:52
Venerdì, 04/02/2011
la funzione converti è sbagliata dovrà essere:
Codice sorgente - presumibilmente C/C++

  1. void converti(char vett_temp[], char scelta[], int vett[]){
  2.               for(int i=0;i<12;i++){
  3.                                               vett[i]=vett_temp[i]-48;
  4.                                              }
  5.  
  6. }


PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo