Vai al contenuto

Programma in C, la soluzione più facile è quella più difficile?


TR1Z10

Messaggi raccomandati

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

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

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...