2015-08-21 2 views
-1

Мое назначение: Создать метод поиска не упорядоченного массива целых чисел для значения, , если найденное значение возвращает индекс его позиции в массиве, если не найден, return -1.Неупорядоченный массив Линейный поиск C++

Это только нахождение числа, которое я вводил, если оно находится в индексе 0, иначе оно говорит, что оно не найдено. Я не уверен, что пошло не так, он работал, когда я инициализировал свой собственный массив, но теперь это не будет, так как я создаю свой собственный массив.

Любая помощь будет замечательной! благодаря!

Пока мой код:

#include <iostream> 

using namespace std; 


//SearchArray prototype 
int SearchArray(int arInt[], int elementAmount, int intSearched); 


int main() 

{ 
    int arInt[50]; 
    int elementAmount; 
    int intSearched = 0; 
    int i; 

    cout << "How many elements would you like to add to your array?\n"; 
    cin >> elementAmount; 

    for(i = 0; i < elementAmount; i++) 
    { 
     cout << "Enter Number: "; 
     cin >> arInt[i]; 
    } 

     cout << "Search array for integer:\n"; 
     cin >> intSearched; 

     //Call search array method 
     SearchArray(arInt, elementAmount, intSearched); 


    system("pause"); 
    return 0; 
} 


int SearchArray(int arInt[], int elementAmount, int intSearched) 
{ 
     int i; 
     bool foundInt = false; 

     for (i=0; i < elementAmount; i++) 
     { 
      if(arInt[i] == intSearched) 
      { 
       foundInt = true; 
       cout << "Integer was found in array at index " << i << endl; 
      } 
      else if (!foundInt) 
      { 
       cout << "Integer was not found in array\n"; 

       system("pause"); 
       return -1; 
      } 


     } 

} 
+0

Почему в методе 'SearchArray' нет кода? – unrealsoul007

+0

Что происходит, когда вы запускаете это под отладчиком? –

+1

Помимо всего прочего, этот код имеет очень опасную ошибку. SearchArray не возвращает значение, когда элемент был найден в массиве. – SergeyA

ответ

0

Добавлен следующий код метода SearchArray в вашем коде, и она отлично работает

int SearchArray(int arInt[], int elementAmount, int intSearched) 
{ 
    for(int i=0; i< elementAmount; i++) 
    { 
     if (arInt[i] == intSearched) 
      return i; 
    } 
    // element not found! 
    return -1; 
} 

И добавьте следующую строку в конце вашего main для извлечения as

int ans = SearchArray(arInt, elementAmount, intSearched); 
cout<<"Indexed of the element"<<ans<<endl; 
+0

спасибо !! Сейчас это работает :) – groot

0

Это потому, что вы всегда заканчиваете ваш поиск по первому элементу. Пусть массив

arr=[3,5,7] and intSearched is 5. 

Теперь в вашей SearchArray() функции foundInt изначально установлена ​​в ложь. Поэтому, когда условие i = 0 and arInt[i] == intSearched не соответствует действительности, оно соответствует else с foundInt является false. И оттуда вы возвращаетесь -1. Что-то вроде ниже было бы проще и сделать работу:

int SearchArray(int *arInt, int elementAmount, int intSearched) 
{ 
    int i; 
    for(i=0; i < elementAmount; i++) 
    { 
     if(arInt[i] == intSearched) 
     { 
      cout << "Integer was found in array at index " << i << endl; 
      return 1; 
     } 
    } 
    cout << "Integer was not found in array\n"; 
    system("pause"); 
    return 0; 
} 
Смежные вопросы