2013-09-28 3 views
0

안녕하세요 여러분, 제 프로그램을 끝내기 위해 도움을 청합니다. 아래 코드는 실행되지만 모든 작업을 수행하지는 않습니다. 프로그램은 배열에 저장할 5 개의 숫자를 입력하도록 사용자에게 요청해야합니다. 둘째로, 사용자가 어레이 내부의 어떤 번호를 찾으려고하는지 묻습니다. 그 후 배열에 번호가 있으면 해당 위치 (색인/색인)가 표시되고 그렇지 않으면 번호가 배열 내에 없음을 표시해야합니다.순차 검색 문의

내 문제는 검색 할 숫자가 배열 내에 있지 않더라도 색인을 계속 표시한다는 것입니다. 또 다른 문제는 배열에 공통 숫자를 입력 할 때 예를 들어 3을 검색하려고합니다 : {3,3,54,0,8} 그냥 "첫 번째"숫자 3의 색인을 표시하고 표시하지 않습니다. "두 번째"숫자 3의 색인. 제발 도와주세요.

#include<iostream> 
#include<conio.h> 

using namespace std; 

int main() 
{ 
    int list[5], a, loc = 0, searchItem, listLength; 
    bool found = false; 

    cout<<"Enter 5 numbers: "<<endl; 
    for(a = 0; a < 5; a++) 
       cin >> list[a]; 

    cout<<"\n\tEnter the number you want to find :"; 
    cin>>searchItem; 

     while(loc < listLength && !found) 
        if(list[loc] == searchItem) 
        found = true; 
        else 
        loc++; 
     if(found) 
      cout << "\n\t\t " << searchItem << " is found at index " << loc << endl; 
     else 
      cout << "\n\n\tThe " << searchItem << " is not in the array" << endl; 


getch();  
} 
+0

가'listlength' 아무것도로 설정됩니다 결코합니다. –

답변

4

4가 두 번 배열에 있다고 가정합니다. while 루프에서 4가 한 번 발견되면 이 발견되어 변수가 true로 설정됩니다. 이것은 루프의 파괴 조건입니다. 당신이 쓴대로 :

while(loc < length && !found) 

이것은 숫자 4가 한 번만 두 번 나타나는 이유입니다. 이 문제를 해결하십시오. (힌트 : 당신이 쉽게 루프에 사용하거나 각 반복의 끝에 = false를 발견 SET)

그리고 요소가 배열 내에 있지 않은 경우, 그것은 하지 디스플레이 그것의 인덱스를 않습니다. 그것을 조심스럽게 다시 시도하십시오.

편집 : 여기에 요청한대로하십시오. 교체하여 에 대한 와 간단하게이 작업 얻을 동안 :

int list[5], a, loc = 0, searchItem, listLength; 
bool found = false; 

cout<<"Enter 5 numbers: "<<endl; 
for(a = 0; a < 5; a++) 
      cin >> list[a]; 

cout<<"\n\tEnter the number you want to find :"; 
cin>>searchItem; 



    for(loc = 0;loc < 5; loc++) 
    { 
     if(list[loc]==searchItem) 
     { 
      cout << "\n\t\t " << searchItem << " is found at index"<<loc<<endl; 
     } 
     else 
      cout << "\n\n\tThe " << searchItem << " is not in the array"<<endl; 
    } 
+0

@ Zeeshan- 어떻게해야합니까? 견본을 주시겠습니까? 나는 초보자이지만 실제로 배우고 싶습니다. –

+0

확실한 감사합니다. 어떤 코드를 써야하는지 배우 겠고 대단히 감사하겠습니다. –

+0

@AngelCasiMontoya는 컨디셔닝 중 컨디셔닝의 개념을 이해 했습니까? 배열에서 두 번 존재하는 정수를 찾을 수없는 이유를 이해 했습니까? (그런데, 배열 요소가 유일한 경우 코드가 잘 작동합니다) – Zeeshan