CICLO DO - Inversione cifre

di Anonimizzato24972 il
43 risposte

43 Risposte - Pagina 3

  • Inverti 1230 ... cosa ottieni ?
  • Qui stiamo parlando di interi e non di stringhe, quindi 321=0321... non capisco dove sia il problema.
  • Anche 321=00321 oppure 000321

    Il problema è evidente. Per fare bene questo esercizio o si usano le stringhe o si usa la printf per aggiungere gli zeri all'inizio quanso servono
  • Ovviamente se parliamo di stringhe 321!=00321... tutto dipende dal fine che ci siamo prefissati.

    Per esempio 2,50 e 2,5 sono stringhe diverse, ma dal punto di vista numerico rappresentano la stessa quantità.
  • Se l'esercizio parla di "invertire le cifre di qualsiasi numero" e quindi presentare a video il risultato, per me è scontato che le cifre vanno presentate tutte, compresi gli zeri non significativi. Scrivere 12, 120, 1200, 120000000 e avere in output sempre 21 non mi pare sia lo scopo dell'esercizio.

    Almeno io la penso così. Quindi modificherei il codice per ottenere la visualizzazione di tutti i caratteri nel posto giusto.

    E' vero anche che è possibile interpretare diversamente l'esercizio, gestendo solo il valore numerico.
    Ma la questione è riuscire a modificare il codice in maniera da ottenere anche l'altra soluzione.

    Il resto è polemica che non mi interessa.

    Lascio comunque la decisione a Mav, che ha aperto il thread e poi è sparito.
  • Quale polemica?!

    Un saluto a Mav!
  • Nippolo ha scritto:


    Qui stiamo parlando di interi e non di stringhe, quindi 321=0321... non capisco dove sia il problema.
    Qui nessuno sa cosa esattamente sia richiesto ... gli zeri potrebbero essere richiesti o no. Se dici di non capire dove sia il problema, io la prendo come polemica perché il dubbio è chiaro.

    Nulla di personale eh... attendo mav ...
  • Ciao a tutti, scusate la mia latitanza.

    Ad un certo punto avete iniziato a parlare in maniera troppo complicata per le mie misere conoscenze e mi sentivo un po' fuori luogo.

    Comunque per quanto riguarda l'esercizio, ha ragione Oregon, chiedeva di invertire tutte le cifre del numero inserito compresi gli eventuali zeri.

    alla fine l'ho risolto in questo modo
    #include <stdio.h>
    int main(void)
    {	
    	int number, ultima_cifra;
    	
    	printf("Enter a number: ");
    	scanf("%d", &number);
    	
    	do {
    		ultima_cifra = number%10;
    		printf("%d", ultima_cifra);
    		number = number/10;
    	}	while(number != 0 && number > 0);
    	
    	return 0;
    }
    Grazie ancora per i consigli e scusate per la mia sparizione.
  • La condizione nella while la puoi scrivere meglio... ragiona
  • Tolgo il number > 0, giusto?
  • Ti basta

    (number)

    Perché?
  • Perchè dividendo number per 10 continua a fare il ciclo fino a quando non ha più niente da dividere, di conseguenza appena finisce le divisioni finisce il ciclo automaticamente, giusto?
  • Io ti chiedevo di studiare il perché quello che hai scritto tra parentesi come condizione è equivalente a quello che ti ho scritto io
  • Non mi viene nessuna idea
Devi accedere o registrarti per scrivere nel forum
43 risposte