TR1Z10 Inviato 25 Luglio 2008 Segnala Condividi Inviato 25 Luglio 2008 Stavo riguardando alcun vecchi esercizi quando l'occhio mi si è posato su: Scrivete un programma che prenda in input un numero di cinque cifre, lo spezzetti nelle sue singole cifre e le visualizzi ognuna separata dall'altra da tre spazi. Suggerimento: usate in modo combinatorio gli operatori di divisione intera e resto. Esempio: se l'utente digitasse 42339, il programma dovrebbe visualizzare 4 2 3 3 9 Ora, ammetto di averci perso una buona mezz'ora; alla fine, me ne sono sbattuto del suggerimento e ho fatto a modo mio con il codice che segue: #include <stdio.h> int main() { int number; int integer1, integer2, integer3, integer4, integer5; printf( "Input an integer, composed by five numbers: "); scanf( "%d", &number ); integer1 = number / 10000; printf( "%d\t", integer1 ); integer2 = number / 1000 - integer1 * 10; printf( "%d\t", integer2 ); integer3 = ( number / 100 ) - ( integer1 * 100 ) - ( integer2 * 10 ); printf( "%d\t", integer3 ); integer4 = ( number / 10 ) - ( integer1 * 1000 ) - ( integer2 * 100 ) - ( integer3 * 10 ); printf( "%d\t", integer4 ); integer5 = number - ( integer1 * 10000 ) - ( integer2 * 1000 ) - ( integer3 * 100 ) - ( integer4 * 10 ); printf( "%d\n", integer5 ); return 0; } Per essere giusto è giusto, ma vorrei sapere cosa intendeva nel suggerimento. Quella che ho adottato io è la soluzione più semplice o quella più difficile? Nel secondo caso, avrei di che preoccuparmi... Link al commento Condividi su altri siti Altre opzioni di condivisione...
DR33140 Inviato 25 Luglio 2008 Segnala Condividi Inviato 25 Luglio 2008 Praticamente il suggerimento voleva che tu scrivessi integer2 = number % 1000; invece che integer2 = number / 1000 - integer1 * 10; Poiché l'operatore modulo ( % ) restituisce il resto della divisione intera. Lo stesso fai per gli altri interi. Per il resto è corretto... Anzi prova ad usare meno variabili ad esempio scrivendo: diviso=10000;for (i=0;i<3;i++)[ integer = number/diviso; number=number%diviso; printf( "%d\t", integer); diviso = diviso/10; ] Fossi in te farei la prova a salvare il risultato in una stringa piuttosto che farlo uscire sullo schermo direttamente, non che serva a qualcosa ma come sfida è divertente. Switched on 07/07/2007 - Computer: MacBook 2,1 (Nero) Intel Core 2 Duo 2.16 GHz 1 GB RAM 160 GB HD OS X 10.4.11 (Tiger) - 0=O 1=L 3=E 4=A Etherial void Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.