If n is 123, count will end up as 3, which would be correct. There are three
digits. If n is 100, count will end up as 2, which is not the correct number of
digits. The loop condition should actually be. While temp is greater than or
equal to 10. We can see this by hand tracing the code. The values I'm
interested in are count and temp. If n starts out as 123, then count will start
as 1, temp will start as 123. Temp is greater than 10, so we increment count.
And divide temp by 10 and divide temp by 10.0 which will give us 12.3. Now, we
go back to the loop condition. Temp is still greater then 10 so we increment
the count and then divide temp by 10.0 again so we have 1.23. Now, when we
check again, temp is less than 10. So we skip to the end, and we're done. But
what would happen if n was 100? Count would start as 1, the way it did before.
And temp would start as 100. Temp is greater than 10, so we would increment
count and then divide temp by 10.0. So we would have 10. And then check the
condition again. But this time, 10 is not greater than 10. It's equal, so it
skips out immediately. When in fact, we still had two digits left. We needed to
increment count again. This is why the condition should be temp is greater than
or equal to 10.
Si n es 123, el conteo terminará como 3, lo cual sería correcto. Hay tres
dígitos. Si n es 100, el conteo terminará como 2, lo cual no es el número correcto de
dígitos. La condición del bucle en realidad debería ser: mientras temp es mayor que o
igual a 10. Podemos ver esto al trazar a mano el código. Los valores en los que estoy interesado
son el conteo y el temp. Si n comienza como 123, entonces el conteo iniciará
como 1, el temp iniciará como 123. temp es mayor que 10, así que incrementamos el conteo.
Y divide temp entre 10, y divide temp entre 10.0 lo que nos dará 12.3. Ahora, regresamos
a la condición de bucle. tempo aún es mayor que 10 así que incrementamos
el conteo y después dividimos temp entre 10.0 otra vez así que tenemos 1.23. Ahora, cuando decimos
verificamos otra vez, temp es menor que 10. Así que nos saltamos hasta el final, y hemos terminado. Pero
¿qué pasaría si n fuera 100? El conteo iniciaría como 1, de la forma en lo que lo hicimos antes.
Y temp iniciará como 100. temp es mayor que 10, así que incrementaríamos el conteo
y después dividímos temp entre 10.0. Así tendríamos 10. Y a continuación, verifica
la condición otra vez. Pero esta vez, 10 no es mayor que 10 es igual, por lo que
se salta de inmediato cuando en realidad todavía teníamos dos dígitos restantes. Necesitábamos
incrementar el conteo otra vez. Esta es la razón por la que la condición debe ser temp es mayor que o
igual a 10.
Si n est 123, le comptage finira
avec 3, ce qui serait correct.
Il y a trois chiffres.
Si n est 100, le compte
terminera avec 2,
ce qui n'est pas le bon
nombre de chiffres.
La condition de boucle
devrait en fait être:
tandis que temp est
supérieur ou égal à 10.
Nous pouvons le voir en
traçant le code à la main.
Les valeurs qui m'intéressent
sont count et temp.
Si n commence comme 123,
count commencera comme 1,
temp commencera comme 123.
Temp est supérieure à 10,
donc nous incrémentons count
et divisons temp par 10
et divisons temp par 10.0
ce qui nous donnera 12.3.
Maintenant, revenons à
la condition de la boucle.
Temp est toujours supérieure à 10,
donc nous incrémentons le comptage
et nous divisons ensuite temp
par 10.0, donc nous obtenons 1.23.
Quand nous vérifions à nouveau,
temp est inférieure à 10,
nous sautons à la fin
et nous avons fini.
Mais que se passerait-il si n était 100?
Le comptage commencerait
par 1, comme avant
et temp commencerait comme 100.
Temp est supérieure à 10,
donc nous incrémenterions count
et diviserions la température par 10.0.
Nous obtiendrions donc 10
et puis vérifions à nouveau la condition.
Mais cette fois-ci,
10 n'est pas supérieur à 10.
C'est égal, donc il saute immédiatement
alors qu'il nous restait deux chiffres.
Nous avions besoin
de réincrémenter count.
C'est pourquoi la condition devrait être
temp est supérieure ou égale à 10.
nが123ならcountは3になり正しいです
これは3桁です
nが100ならcountは2になり
正しい桁数ではありません
ループの条件は実際にはtempが10より大きい
または等しい時とするべきです
コードを手作業で追跡して確認することができます
私が注目する値はcountとtempです
nを123で始めるとcountは1で
tempは123です
tempは10より大きいのでcountを増やします
tempを10で割ります
tempを10.0で割ると12.3です
ループ条件に戻ります
tempはまだ10より大きいのでcountを増やします
再びtempを10.0で割ると1.23です
再度確認するとtempは10より小さいので
最後まで飛んで終わります
しかしnが100だったらどうでしょうか
前にやったようにcountは1で始まります
tempは100で始まります
tempは10より大きいのでcountを増やします
tempを10.0で割ると10になります
条件を再度チェックします
今回は10が10より大きくなく等しいので
すぐにループから出ます
実際はまだ2桁残っているので
私たちはcountを再度増やす必要があります
条件はtempが10より大きいか
10と等しいとするべきです
만약 n이 123이라면 count는 3에서 끝납니다. 즉, 답은 맞습니다. 3개의 숫자가
있다는 뜻입니다. 만약 n이 100이라면 count는 2에서 끝납니다. 이는 답이
맞지 않습니다. while문의 조건은 사실 temp >=10이여야 합니다.
손으로 추적해보면 알 수 있습니다. 관심을 가져야 할 변수들은
count와 temp입니다. 만약 n이 123에서 시작하면 count는
1에서 시작하고 temp는 123에서 시작합니다. temp는 10보다 크니 count를 1
증가합니다. 그런 후에 temp를 10.0으로 나누고 12.3을 얻습니다. 이제 다시
반복문 조건으로 돌아갑니다. temp는 10보다 크기에 count는 1
증가하고 temp를 다시 10.0으로 나눕니다. 그러면 1.23을 얻습니다. 다시
조건을 검사하면 temp는 10보다 작습니다. 그래서 반복문을 실행하지 않습니다.
하지만 n이 100일 때는 어떻게 될까요? count는 전과 같이 1로 시작하고
temp는 100으로 시작합니다. temp는 10보다 크니 count는 1이 증가하고
temp를 10.0으로 나눕니다. 그러면 10입니다. 그런 후에 조건을
다시 검사하지만, 10은 10보다 크지 않습니다. 둘이 같습니다. 그래서
반복문을 실행하지 않습니다. 숫자 둘이나 남았는데 건너뛰었습니다. 한 번 더
count를 증가 시켜야합니다. 그러므로 while문의 조건은 temp >= 10이여야
합니다.