Enryx (Normal User)
Newbie
Messaggi: 1
Iscritto: 08/12/2010
|
Ciao a tutti,
Ho appena iniziato a programmare in C, sono autodidatta,
Oggi volevo fare un programma che mi giri i numeri, nel senso; io scrivo 41 e mi esce 14.
sono riuscito a fare questo:
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <stdlib.h> void main() { int a,b; printf("Inserisci la prima cifra del numero che vuoi scrivere: "); scanf("%d",&a); printf("Inserisci la seconda cifra del numero che vuoi scrivere: "); scanf("%d",&b); printf ("il numero in uscita e': "); printf ("%d", b); printf ("%d", a); getch (); }
|
Però mi sono reso conto che non funziona con numeri a tre cifre.
Come posso fare?
Grazie a tutti
Ultima modifica effettuata da Enryx il 08/12/2010 alle 19:48 |
|
Alex (Ex-Member)
Expert
Messaggi: 441
Iscritto: 15/08/2005
|
io procederei cosi:
1) leggi il numero e lo salvi in un int;
in un ciclo while:
2)fai il modulo 10 del numero e lo metti da parte (n%10)
3)dividi il numero di partenza per 10
4)salvi il modulo in una variabile e la motiplichi per 10 (per spostare le cifre a snistra)
condizione di uscita del while: quando il numero iniziale è uguale a zero non ci sono più cifre da estrarre quandi si esce...
quindi:
Codice sorgente - presumibilmente C++ |
int main (void){ int n,rovescio,temp; scanf("%d",&n); while (n!=0)}{ temp=n%10; n/=10; rovescio+=temp; rovescio*=10; } printf("%d",rovescio); return 0; }
|
dovrebbe funzionare...
|
|
Giarados (Ex-Member)
Pro
Messaggi: 69
Iscritto: 25/07/2010
|
Io ho risolto così:
Codice sorgente - presumibilmente C++ |
/* Source title: giracifre * * Author: Francesco Marrone * * Date: 8/11/2010 (19:58:27) */ #include <stdio.h> #include <math.h> int getEsponente(int input); int getCifra(int input, int index); int main(void) { int input; int counter=0; printf("Inserisci il numero che vuoi ribaltare: "); scanf("%d",&input); while(counter<=getEsponente(input)) { printf("%d",getCifra(input,counter)); counter++; } printf("\n"); return 0; } int getEsponente(int input) { int counter=-1; while(input>0) { input/=10; counter++; } return counter; } int getCifra(int input, int index) { return (int)(input % (int)pow(10.0, (double) index+1) )/pow(10.0, (double) index); }
|
|
|
Pitagora (Member)
Expert
Messaggi: 367
Iscritto: 12/06/2010
|
Prendere una striinga e stamparla al contrario vale?
|
|
carmine (Member)
Pro
Messaggi: 168
Iscritto: 20/04/2010
|
ti conviene usare un vettore...così leggi le cifre e stampi al contrario!
|
|
Numa Pompilio (Ex-Member)
Pro
Messaggi: 66
Iscritto: 03/05/2010
|
Postato originariamente da Enryx:
Ciao a tutti,
Ho appena iniziato a programmare in C, sono autodidatta,
Oggi volevo fare un programma che mi giri i numeri, nel senso; io scrivo 41 e mi esce 14.
sono riuscito a fare questo:
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <stdlib.h> void main() { int a,b; printf("Inserisci la prima cifra del numero che vuoi scrivere: "); scanf("%d",&a); printf("Inserisci la seconda cifra del numero che vuoi scrivere: "); scanf("%d",&b); printf ("il numero in uscita e': "); printf ("%d", b); printf ("%d", a); getch (); }
|
Però mi sono reso conto che non funziona con numeri a tre cifre.
Come posso fare?
Grazie a tutti |
Devi creare una nuova variabile dove ricopiare il tuo numero grazie ad un ciclo for.
Naturalmente l'indice del numero e l'indice del nuovo numero dovranno partire dagli estremi opposti
|
|
Giarados (Ex-Member)
Pro
Messaggi: 69
Iscritto: 25/07/2010
|
Io risolverei così: prendi in input un numero di n cifre e stampi le cifre esattamente al contrario. Basta stampare per prima la cifra 0, poi la cifra 1, poi la cifra 2, sino alla cifra n-1.
Buona risoluzione
|
|
Numa Pompilio (Ex-Member)
Pro
Messaggi: 66
Iscritto: 03/05/2010
|
Postato originariamente da Giarados:
Basta stampare per prima la cifra 0, poi la cifra 1, poi la cifra 2, sino alla cifra n-1.
|
In questo modo le stampa in ordine.........o sbaglio?
Dovrebbe partire da n-1 per finire a 0 |
|
Giarados (Ex-Member)
Pro
Messaggi: 69
Iscritto: 25/07/2010
|
Postato originariamente da Numa Pompilio:
Postato originariamente da Giarados:
Basta stampare per prima la cifra 0, poi la cifra 1, poi la cifra 2, sino alla cifra n-1.
|
In questo modo le stampa in ordine.........o sbaglio?
Dovrebbe partire da n-1 per finire a 0 |
Dipende se le vedi da DX verso SX o al contrario |
|