Oppure

Loading
08/12/10 18:48
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:

#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 08/12/10 18:48
aaa
08/12/10 19:31
carmine
ti conviene usare un vettore...così leggi le cifre e stampi al contrario!
aaa
08/12/10 19:31
Numa Pompilio
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:

#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

aaa
08/12/10 19:35
Giarados
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 ;)
aaa
08/12/10 19:43
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
aaa
08/12/10 19:57
Giarados
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 :rofl:
aaa
08/12/10 19:58
Alex
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:
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...
aaa
08/12/10 20:02
Giarados
Io ho risolto così:
/* 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);
}

aaa