пытается выполнить поиск по индексу для строки - PullRequest
0 голосов
/ 27 октября 2011

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

#include <iostream>

using namespace std;

void contactArray(string a[], int size);

string search(const string a[], int size, string find);

int main( )
{
    cout << "This program searches a list .\n";
    const int arraySize = 3;
    string a[arraySize];

    contactArray(a, arraySize);

    string find;
    cout << "Enter a value to search for: ";
    cin >> find;
    string lookup = search(a, arraySize, find);
    if (lookup == " ")
        cout << find << " is not in the array.\n";
    else
        cout << find << " is element " << lookup << " in the array.\n";
    return 0;
}

void contactArray(string a[], int size)
{
    cout << "Enter " << size << " list.\n";
    for (int index = 0; index < size; index++)
        cin >> a[index];
}

int search(const string a[], int size, string find)
{
    string index = "";
    while ((a[index[3]] != find) && (index < size))
        cout<<"try again"<<endl;
    if (index == find)        
        index = "";
    return index;
    cout<<"hgi";
}

Ответы [ 3 ]

1 голос
/ 27 октября 2011

Вы можете сделать это с целыми числами? Делайте это с целыми числами, вызывайте эту функцию со строками, и там, где вы получите ошибку cannot convert string to int компилятора, измените слово int на string. Это должно быть почти точно так же.

1 голос
/ 27 октября 2011

вместо

int search(const string a[], int size, string find)
{
    string index = "";
    while ((a[index[3]] != find) && (index < size))
        cout<<"try again"<<endl;
    if (index == find)        
        index = "";
    return index;
    cout<<"hgi";
}

попробуйте что-то вроде

int search(string a[], int size, string find)
{
      int index = -1;
      for(int i=0;i<size;i++)
      {
         if(a[i] == find)
         {
             index = i;
             break;
         }
      }
      return index; 
}

Если функция возвращает -1, строка не найдена. Любой другой возврат - это место в массиве, где находится строка 'find'.

0 голосов
/ 27 октября 2011

Используйте цикл for, чтобы перебрать массив и проверить, находится ли значение в массиве.Вероятно, есть функция C ++ для этого cstdlib, и я знаю, что в .Net это встроено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...