2014-03-05 4 views
0

저는 C 프로그래밍을 통해 코드를 작성하고 Visual Studio를 사용하여 프로그램을 컴파일하고 있습니다.IF 문을 사용하여 완벽한 검색을 수행 할 수 없습니다.

여기에 수동으로 입력 된 배열 요소에서 번호를 찾으려고하는데 올바르게 작동하지 않습니다.


#include<stdio.h> 
#define SIZE 3 
main() 
{ 
int i=0; 
int search_no=0; 
int myArray[SIZE]; 

for(i=0;i<SIZE; i++) 
{ 
    printf("Enter value : "); 
    scanf("%d", &myArray[i]); 
} 

printf("Enter value to search : "); 
scanf("%d", &search_no); 
for(i=0;i<SIZE;i++) 
{ 
    if(search_no==myArray[i]) 
    { 
     printf("Number found\n"); 
    break; 
    } 
if(search_no!=myArray[i]) 
    { 
     printf("Unable to find. Kindly re-check the number\n"); 
     break; 
    } 
} 


getch(); 

} 

그것은 컴파일됩니다하지만 제대로 요소를 검색하지 않고 문을 다음 완벽하게 작동하면 내가 마지막을 제거하면

. 값이 발견되면 두 가지 방법으로 메시지를 인쇄하고 싶습니다.

감사합니다.

+1

배열의 요소를 두 개 이상 선택하지 마십시오. 검사하는 첫 번째 요소가 일치하면 성공 메시지를 인쇄하고 중지합니다. 검사하는 첫 번째 요소가 일치하지 않으면 실패 메시지를 인쇄하고 중지합니다. * nothing *이 일치 할 때만 실패하고, * something *이 일치하지 않을 때 실패하지 않습니다. – hobbs

+0

그래서 어떻게 수정해야합니까? – user3300068

답변

2

그 자체로, 배열의 첫 번째 값이 찾고자하는 값이 아닌 경우 루프에서 벗어납니다.

루프 다음에 찾을 수없는 코드를 넣습니다.

int found = 0; 
for(i=0;i<SIZE;i++) 
{ 
    if(search_no==myArray[i]) 
    { 
     printf("Number found\n"); 
     found = 1; 
     break; 
    }   
} 

if(found == 0) 
{ 
    printf("Unable to find. Kindly re-check the number\n"); 
} 
+0

여기 왜 이렇게 다른가요? 왜냐하면 내가 C#에 동일한 코드를 작성할 때, 나는 그런 문제를 알지 못하고 C# 코드가 정확히 내가 기대했던대로 작동하기 때문이다. 조건을 확인하기 위해 하나 이상의 변수를 추가하는 논리를 알고 싶습니다. 정의 된 If Block에 의해서만이 작업이 수행되는 이유는 무엇입니까? – user3300068

+0

여기 C#으로 변환 된 동일한 루프가 첫 번째 것이 아닌 경우 값을 찾지 않을지 의심 스럽습니다. 루프의 C# 코드는 C#에서도 작동하지 않습니다. https://ideone.com/orVzIw –

+0

그리고 IF ELSE 블록을 사용하여 조건을 확인하는 이유가 작동하지 않는 이유는 무엇입니까? – user3300068

관련 문제