2012-09-06 14 views
8

Dalla "Programmazione in Objective C" (Kochan):Modulo operatore in Objective C

Programma 5.8 richiede all'utente di immettere un numero e poi procede per visualizzare i numeri da quel numero dalla destra a sinistra cifre .

// Program to reverse the digits of a number 
#import <Foundation/Foundation.h> 

int main (int argc, char *argv[]) 

{ 
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
int number, right_digit; 

NSLog (@"Enter your number."); 
scanf ("%i", &number); 

while (number != 0) { 
right_digit = number % 10; 
NSLog (@"%i", right_digit); 
number /= 10; 
} 

[pool drain]; 
return 0; 
} 

La mia domanda è: cosa succede quando l'utente digita numeri a una cifra da 1 a 9? Non sono riuscito a trovare alcun materiale su questo caso. Dopo aver compilato il programma, procedi con la restituzione di quella singola cifra. Perché? Stavo cercando di elaborare il codice per questa attività e passare letteralmente 2 ore, cercando di incorporare cicli e processi decisionali per questo problema "se il numero è a una cifra". E la soluzione era così ignorante!

risposta

15

L'operatore modulo ti dà il resto dopo una divisione. Se hai 8% 10 il risultato è 8 perché 8/10 è 0 con un resto di 8. Ottieni lo stesso risultato se hai il 38% 10, 38/10 è 3 con un resto di 8.

modifica : Modulo è quello che hai imparato normalmente come prima divisione nella scuola di elemantary. È divertente che la maggior parte dei bambini non abbia problemi con il modulo, ma quando hanno appreso che 8/10 è 0.8 hanno problemi a comprendere il modulo.

+0

il numero stesso diventa un promemoria, capito! –

+1

@Mr_Vlasov Se questo risponde alla tua domanda, puoi accettarla (facendo clic sul segno di spunta accanto ad essa) per far sapere agli altri che non stai cercando una risposta migliore e per ottenere un badge nuovo di zecca su Stack Overflow. – dasblinkenlight

+0

più 1 per la scuola elementare – BootMaker