나는이 숙제를 가지고 있고 왜 내 프로그램이 실제로 작동하지 않는지 이해하지 못합니다 (끊임없이 1 번 인쇄).재귀를 사용하여 불리언 프로그램 프로그래밍
사용자로부터 숫자와 숫자를받는 프로그램을 작성한다고 가정합니다 (입력은 ok라고 가정 할 수 있습니다) 숫자가 짝수 시간 안에 나타날 경우 1을 인쇄합니다. 그것은 이상한 양의 경우 0을 인쇄합니다. 부울 재귀 함수를 사용해야합니다.
사람이 나에게 뭐가 잘못 됐는지 말해 줄 수 있습니까?
#include <iostream>
using namespace std;
bool isEven(int num, int dig);
void main()
{
bool res;
int num, dig;
cout << "Please enter a number and a digit" << endl;
cin >> num >> dig;
cout << isEven(num, dig);
}
bool isEven(int num, int dig)
{
bool res;
int counter = 0;
if (num < 10)
{
if (counter % 2 != 0)
res=false;
else
res=true;
return res;
}
else
{
res=isEven(num/10, dig);
if (num % 10 == dig)
counter++;
return res;
}
}
[디버거를 사용하는 방법을 배우게] (HTTPS : //ericlippert.com/2014/03/05/how-to-debug-small-programs/). 몇 분 안에이 프로그램의 문제점을 보여 주며 앞으로 몇 시간을 절약 할 것입니다. – hnefatl
'void main'은 무효입니다. C++. 대신에'int main'을 사용하십시오. – hnefatl
BTW, 숫자로 재생할 때 숫자를 문자열로 유지하는 것을 선호합니다. 각 숫자는''0 ''을 빼서 문자에서 숫자로 변환 할 수 있습니다 :'int digit = number_as_text [i] - '0';' –