C'è qualche anima pia in grado di spiegarmi il procedimento di inversione di un intero?
Esempio:
input ---> 1234
output--->4321
come posso fare? Grazie anticipate
C'è qualche anima pia in grado di spiegarmi il procedimento di inversione di un intero?
Esempio:
input ---> 1234
output--->4321
come posso fare? Grazie anticipate
Ma in input hai un numero e in uscita un numero in un'altra variabile, o ti serve soltanto visualizzarlo invertito?
Una buona idea,anche se credo poco efficiente, sarebbe
[list=1][*]Convertire il numero in stringa con itoa[*]Invertire la stringa con la funzione strrev[*]Convertire la stringa invertita in un numero con atoi[/list=1]
"Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)
"Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)
http://xvincentx.netsons.org/programBlog
mi servirebbe una cosa di questo tipo
int intero;
printf("inserisci un numero intero:\n");
scanf("%d", &intero);
variabile = intero invertito; ( 1234 ---> 4321)
printf("%d", variabile);
Perche' non segui il consiglio di XWolverineX ?
Principalmente perchè la funzione itoa su linux non c'è![]()
Beh ... avresti potuto dirlo sin dall'inizio ... per questo motivo le domande nel forum vanno poste indicando *tutto* quello che puo' essere utile ...
In ogni caso, un metodo potrebbe essere quello di dividere per potenze di 10 in maniera da prelevare la prima cifra decimale fermandosi appena questa e' zero ...
E comunque mi sembra una soluzione un pò dispendiosa...Originariamente inviato da liberlux
Principalmente perchè la funzione itoa su linux non c'è![]()
Ho fatto un piccolo esempio in C++(col C non mi destreggio molto)
Da però un'eccezione su itoa, forse per colpa del parametro radix che non mi ricordo a che serve (mi pare è la base con cui leggere il numero, infatti itoa è usata anche per convertire numeri da valori decimali a esadecimali, mi pare.)codice:#include <cstring> #include <iostream> int main(void) { int num; char *ptr; std::cout<<"Inserire un numero"; std::cin>>num; ptr = new char[5]; itoa(num,ptr,1); strrev(ptr); num = atoi(ptr); std::cout <<"Numero girato: " << num; delete[] ptr; system("PAUSE"); return 0; }
"Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)
"Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)
http://xvincentx.netsons.org/programBlog
Essendo proprio la radice, deve essere 10 per i numeri decimali ...
Ma scusa, hai sottolineato il fatto che non c'e' la itoa e tu proponi un codice con la itoa ??
Utilizza un altro metodo ...
Una mia versione
codice:int main() { long int out=0, p=1; char ch; do { ch=fgetc(stdin); if( ch=='\n' ) break; if( ch>47&&ch<=58) { out+=(p*(ch-48)); p=p*10; } } while(1); printf("\n\n%d\n", out); return 0; }
01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
All errors are undocumented features waiting to be discovered.