Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Numeri al contrario
Forum - C/C++ - Numeri al contrario

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


Messaggi: 1
Iscritto: 08/12/2010

Segnala al moderatore
Postato alle 19:48
Mercoledì, 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++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. void main()
  6.  
  7. {
  8.    
  9.     int a,b;
  10.     printf("Inserisci la prima cifra del numero che vuoi scrivere: ");
  11.     scanf("%d",&a);
  12.     printf("Inserisci la seconda cifra del numero che vuoi scrivere: ");
  13.     scanf("%d",&b);
  14.     printf ("il numero in uscita e': ");
  15.     printf ("%d", b);
  16.     printf ("%d", a);
  17.     getch ();
  18. }



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
PM
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Up
1
Down
V
Segnala al moderatore
Postato alle 20:58
Mercoledì, 08/12/2010
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++

  1. int main (void){
  2.    int n,rovescio,temp;
  3.    scanf("%d",&n);
  4.    while (n!=0)}{
  5.      temp=n%10;
  6.      n/=10;
  7.      rovescio+=temp;
  8.      rovescio*=10;
  9.    }
  10.    printf("%d",rovescio);
  11.    return 0;
  12. }



dovrebbe funzionare...


Alex=)
PM
Avatar
Giarados (Ex-Member)
Pro


Messaggi: 69
Iscritto: 25/07/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 21:02
Mercoledì, 08/12/2010
Io ho risolto così:
Codice sorgente - presumibilmente C++

  1. /* Source title:        giracifre                       *
  2.  * Author:              Francesco Marrone               *
  3.  * Date:                8/11/2010 (19:58:27)            */
  4. #include <stdio.h>
  5. #include <math.h>
  6.  
  7. int getEsponente(int input);
  8. int getCifra(int input, int index);
  9.  
  10. int main(void)
  11. {
  12.         int input;
  13.         int counter=0;
  14.  
  15.         printf("Inserisci il numero che vuoi ribaltare: ");
  16.         scanf("%d",&input);
  17.  
  18.         while(counter<=getEsponente(input))
  19.         {
  20.                 printf("%d",getCifra(input,counter));
  21.                 counter++;
  22.         }
  23.  
  24.         printf("\n");
  25.  
  26.         return 0;
  27. }
  28.  
  29. int getEsponente(int input)
  30. {
  31.         int counter=-1;
  32.  
  33.         while(input>0)
  34.         {
  35.                 input/=10;
  36.                 counter++;
  37.         }
  38.  
  39.         return counter;
  40. }
  41.  
  42. int getCifra(int input, int index)
  43. {
  44.         return (int)(input % (int)pow(10.0, (double) index+1) )/pow(10.0, (double) index);
  45. }




"ché perder tempo a chi più sa più spiace" (Purgatorio, Canto III - v.78)
PM
Avatar
Pitagora (Member)
Expert


Messaggi: 367
Iscritto: 12/06/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 21:10
Mercoledì, 08/12/2010
Prendere una striinga e stamparla al contrario vale? :rotfl:


Yep, I came back :P
PM
Avatar
carmine (Member)
Pro


Messaggi: 168
Iscritto: 20/04/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 20:31
Mercoledì, 08/12/2010
ti conviene usare un vettore...così leggi le cifre e stampi al contrario!


Computer Science
PM
Avatar
Numa Pompilio (Ex-Member)
Pro


Messaggi: 66
Iscritto: 03/05/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 20:31
Mercoledì, 08/12/2010
Testo quotato

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++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. void main()
  6.  
  7. {
  8.    
  9.     int a,b;
  10.     printf("Inserisci la prima cifra del numero che vuoi scrivere: ");
  11.     scanf("%d",&a);
  12.     printf("Inserisci la seconda cifra del numero che vuoi scrivere: ");
  13.     scanf("%d",&b);
  14.     printf ("il numero in uscita e': ");
  15.     printf ("%d", b);
  16.     printf ("%d", a);
  17.     getch ();
  18. }



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



PM
Avatar
Giarados (Ex-Member)
Pro


Messaggi: 69
Iscritto: 25/07/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 20:35
Mercoledì, 08/12/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 ;)


"ché perder tempo a chi più sa più spiace" (Purgatorio, Canto III - v.78)
PM
Avatar
Numa Pompilio (Ex-Member)
Pro


Messaggi: 66
Iscritto: 03/05/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 20:43
Mercoledì, 08/12/2010
Testo quotato

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


PM
Avatar
Giarados (Ex-Member)
Pro


Messaggi: 69
Iscritto: 25/07/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 20:57
Mercoledì, 08/12/2010
Testo quotato

Postato originariamente da Numa Pompilio:

Testo quotato

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 :rofl:


"ché perder tempo a chi più sa più spiace" (Purgatorio, Canto III - v.78)
PM
Pagine: [ 1 2 ] Precedente | Prossimo