Oppure

Loading
18/04/17 14:22
Flint
salve ragazzi.. ho svolto un esercizio che mi chiedeva di convertire un numero input decimale e trasformarlo poi in binario , esadecimale e ottale ... il problema e che una volta convertiti i numeri manca un ultimo passaggio ossia quello di invertire il numero es:091 in 190 tutto questo utilizzando solo gli operatori di interazione
aaa
18/04/17 14:31
pierotofy
Cosa intendi per "operatori di interazione"?


Il mio blog: piero.dev
18/04/17 14:44
Flint
for- do while switch
aaa
18/04/17 16:33
Template
Tralasciando il tuo linguaggio estremamente inappropriato ("operatori d'interazione"... :_doubt: ), quello che ti serve è banalmente:

-> Per ogni cifra del numero
-----> Estrai l'ultima cifra del numero (operazione modulo per ottenere la cifra, operazione divisione intera per toglierla dalla "coda";)
-----> Metti la cifra estratta in coda al numero "finale"
-----> Passa alla cifra successiva
Ultima modifica effettuata da Template 18/04/17 16:34
aaa
18/04/17 17:09
Mikelius
Sapendo le cifre del numero, potresti semplicemente

-> creare un vettore di char[num_cifre]
-> con un ciclo
--> calcolare il modulo del numero
--> convertirlo in carattere e metterlo nella stringa
--> dividere il numero per 10
--> ripetere il ciclo
-> usare atoi() e convertire la stringa in numero (attenzione allo 'Sapendo le cifre del numero, potresti semplicemente

-> creare un vettore di char[num_cifre]
-> con un ciclo
--> calcolare il modulo del numero
--> convertirlo in carattere e metterlo nella stringa
--> dividere il numero per 10
--> ripetere il ciclo
-> usare atoi() e convertire la stringa in numero (attenzione allo '{parsed_message}' )

Se non sai le cifre del numero... potrestri crearti la stringa enorme oppure crearti un puntatore o utilizzare malloc/realloc per coprire tutte le cifre.' )

Se non sai le cifre del numero... potrestri crearti la stringa enorme oppure crearti un puntatore o utilizzare malloc/realloc per coprire tutte le cifre.
Ultima modifica effettuata da Mikelius 18/04/17 17:19
aaa
19/04/17 7:27
Flint
Grazie mille per le risposte.
Per quanto riguarda i vettori e i puntatori ancora non ci sono arrivato scusate del linguaggio che ho usato.. :D è poco che mi sono avventurato nel mondo della programmazione l'esercizio mi dice di completarlo usando solo le competenze assunte fin'ora ossia le basi comprese switch while for
aaa
19/04/17 10:24
Template
Mi sembra una richiesta idiota, quella dell'esercizio... potresti spiegarci dove hai preso l'esercizio, chi te l'ha assegnato e nell'ambito di cosa?

Comunque, per questa volta contravverrò alla promessa fatta a me stesso e ti proporrò del codice C che risolva il tuo problema: se davvero sei un principiante assoluto, probabilmente vedere del codice fatto decentemente ti sarà utile.


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
	unsigned int numero, numero_invertito;

	printf("Inserire numero: ");
	scanf("%d", &numero);

	numero_invertito = 0;

	while (numero > 0)
	{
		numero_invertito *= 10;
		numero_invertito += numero % 10;
		numero /= 10;
	}

	printf("Numero invertito: %d", numero_invertito);

	return EXIT_SUCCESS;
}


L'idea di questo codice è la seguente: un generico numero xyz può essere espresso in base decimale come (x * 100) + (y * 10) + (z * 1), ovvero come somma di cifre moltiplicate per potenze decrescenti di 10. Sfruttando tutto questo, si può dire che il numero zyx, che è il "simmetrico" di xyz, è esprimibile come (z * 100) + (y * 10) + (x * 1); basta pertanto ricavare ciascuna cifra di un numero, ed esso diventa immediatamente "invertibile".

Il codice che ti ho proposto ha solo un "problema": elimina automaticamente tutti gli zeri all'inizio, perchè per la rappresentazione numerica essi sono inutili. Se quegli zeri ti servono (ovvero: se devi stampare il numero), hai sostanzialmente due soluzioni:

-> Implementare il programma con delle stringhe, in modo da poter conservare le singole cifre come caratteri.
-> Utilizzare, nella printf che dovrà stampare il numero, un opportuno specificatore di formato.
aaa
19/04/17 11:20
Flint
In realtà il problema per quanto riguarda invertire il numero l'avevo già risolto dopo il tuo primo passaggio anche se a modo mio:

#include <stdio.h>

int main()
{
int numero;
printf("Inserire il numero: ";);
scanf("%d",&numero);
while(numero>0)
{
printf("%d",numero%10);
numero/=10;
}


system("pause";);
return 0;
}
aaa