Так что я не могу понять это. (очевидно)C++ код магически добавить 1 к выходу
В принципе, счетчик переменных объявляется в начале, а затем изменяется или увеличивается в одном месте. Ожидаемый конечный счет: 78682
. И когда счетчик равен этому, я распечатаю строку «ok
». Когда счетчик увеличивается до 78683
, код проверяет состояние и печатает строку «not ok
».
Он никогда не печатает «not ok
», но в самом конце, когда мы печатаем значение счета, это 78683
! Когда C++ увеличился?
Другое дело, что, когда комментарий раскоментирован ниже, окончательный результат становится 78682
, хотя я просто не понимаю, почему. Кто угодно? (Ой кстати, код занимает минуту, чтобы запустить ....)
#include <stdio.h>
int main(){
int count=0, sum=0;
int length []={1,2,4,10,20,40,100,200};
int value [] ={200,100,50,20,10,5,2,1};
int tmp[8] ={0};
bool stop=false;
while(!stop){
sum=0;
for(int j=0,k=0; j<8; j++){
sum+=value[j]*tmp[j];
if(j==7){
if(sum==200){
count++;
if(count==73682) printf("ok\n");
if(count==73683) printf("not ok\n");
}
k=j;
tmp[k]++;
while(tmp[k]==length[k]+1){
tmp[k]=0;
k--;
tmp[k]++;
if(tmp[0]==2)
{
//tmp[0]--;
stop=true;
}
}
}
}
}
printf("Total %d.", count);
return 0;
}
Это не 'C++'. Довольно далеко, я бы сказал. Не похоже, что это действительно важно, но все же. – luk32
@ luk32 Скомпилируйте его с помощью g ++ и запустите его. Это C++. – TurtleTread
'printf' is * not * C++, и поэтому это не« чистый »C++. – ChiefTwoPencils