2017-12-24 9 views
0

저는 현재 학교에서 C++을 배우고 있으며 제출해야하는 프로젝트의 일부로 단어를 쓰고 있습니다. 이를 위해, 나는 알파벳과 다른 필요한 것들 (단서, 규칙 등)의 그리드를 이미 만들었습니다. 나는 좌표의 형태로 정수형 배열을 취하고 사용자가 배열의 4 개 값을 입력하여 초기 행과 열 번호와 마지막 행과 열 번호를 나타냅니다.이 행 번호는 a와 b의 첫 번째 및 마지막 알파벳입니다. 특정 단어.이 코드 조각이 예기치 않은 결과를 반환하는 이유는 무엇입니까?

이 작업을 수행 한 후 사용자가 입력 한 배열을 해당 단어의 좌표가있는 이미 정의한 배열과 비교하고 있습니다. 이것은 여기에 도시되어있다 : 여기서

cout<<"Enter the coordinates of starting and final characters : row1 col1 row2 col2 "<<endl; 
    for (z = 0; z < 4; z++)  //first for loop 
     cin>>p[z];    //taking the input as an array 'p' 

    for (b = 0; b < 4; b++)  //second for loop 
    { 
     if (p[b] == messi[b]) 
      b+=0; 
    } 
    if (b == 4) 
     cout<<"Great!!!! You have answered the question correctly"<<"\n\n"; 
    else 
     cout<<"You got this one wrong mate! Try again :)"<<"\n\n"; 

는 메시 [B] 그리드에 단어 "메시"에 대응하는 좌표를 갖는 어레이이다. 이제, 두 번째 for 루프 이후의 'if'문에 b = 3인지 확인하는 조건이 포함되어 있어야합니다.하지만 그렇게하면 출력이 항상 'else'문에서 말하는 "ie"가됩니다. 즉, 당신은 이걸 ... "모든 입력에 대해. 그러나 b = 4인지 확인하기 위해 조건을 부과하면 결과는 모든 입력에 대해 'if ...'문구에 'Great !! ...'라고 표시됩니다.

내가 뭘 잘못 했니? 나는 당신에게 문제를 설명 할만큼 분명하다는 희망을 갖고 있습니다. CodeBlocks 16.01을 사용하고 있습니다.

+2

'b + = 0;'에서 무엇을 기대합니까? 그리고 루프를 감싸는 것으로부터 무엇을 기대합니까? – Jarod42

+0

출력을 붙일 수 있습니까 –

+0

글쎄, 내 출력 화면에서 거기에서 콘텐츠를 복사 할 수 없습니다. – Saksham

답변

1

마지막으로 조건이 true가 된 이후 for -loop 이후에 b은 두 번째 이후에 항상 4와 같음을 알 수 있습니다. b < 4. 그래서 증가 후에는 당신은 또한 코드에 절대적으로 아무것도하지하지 않는 NOP 코드 b += 0;이 -loop 두 번째 for 내부 4.

될 것입니다. 여기에 의도는 무엇입니까?

+0

오, 방금 오류가 무엇인지 알아 냈습니다. 나는 지금 그것을 바로 잡았다. 아마 내가 그 문제를 설명하는 데 충분치 않았 겠지. 어쨌든 고마워. – Saksham