Objetivo C “hacer - mientras que”
-
02-10-2019 - |
Pregunta
El ejemplo de uno de los ejercicios en el libro que estoy leyendo muestra el siguiente código:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int input, reverse, numberOfDigits;
reverse = 0;
numberOfDigits = 0;
NSLog (@"Please input a multi-digit number:");
scanf ("%i", &input);
if ( input < 0 ) {
input = -input;
NSLog (@"Minus");
}
do {
reverse = reverse * 10 + input % 10;
numberOfDigits++;
} while (input /= 10);
do {
switch ( reverse % 10 ) {
case 0:
NSLog (@"Zero");
break;
case 1:
NSLog (@"One");
break;
case 2:
NSLog (@"Two");
break;
case 3:
NSLog (@"Three");
break;
case 4:
NSLog (@"Four");
break;
case 5:
NSLog (@"Five");
break;
case 6:
NSLog (@"Six");
break;
case 7:
NSLog (@"Seven");
break;
case 8:
NSLog (@"Eight");
break;
case 9:
NSLog (@"Nine");
break;
}
numberOfDigits--;
} while (reverse /= 10);
while (numberOfDigits--) {
NSLog (@"Zero");
}
[pool drain];
return 0;
}
Mi pregunta es la siguiente, mientras que la muestra de los estados (entrada / = 10), que, si lo entiendo correctamente básicamente medios (entrada = entrada / 10). Ahora, si eso es cierto, ¿por qué no el bucle acaba de funcionar continuamente? Es decir, incluso si se va a dividir en un 10 0 entonces eso sería todavía extraer un número. Si el usuario era a la entrada de "50607", sería primero cortó el "7", entonces el "0", y así sucesivamente y así sucesivamente, pero ¿Por qué salir del bucle después de retirar el "5". ¿No la respuesta después de la "5" será el mismo que el "0" entre el 5 y el 6 al programa?
Solución
parece estar confundido sobre la diferencia entre /
y %
. Ese bucle está dividiendo input
y utilizando el cociente, no el resto. Para su ejemplo de 50607
, el bucle sale 5 iteraciones:
-
input = 50607
-
input = 5060
-
input = 506
-
input = 50
-
input = 5
Después de la última iteración, se convierte en input
extremos 0
y el bucle.