2015-01-19 2 views
1

Я хочу добавить индекс arrayOfNumbers, который соответствует numToMatch массиву. Не знаете, как это сделать. Я новичок в C++. Любая помощь будет оценена.Как хранить числа, которые соответствуют массиву?

int numToMatch[4] = {1,2,3,4}; 
int arrayOfNumbers[7] = {0, 1, 2, 3, 4, 5, 6}; 
int IndexThatMatched[4]; // Want to add to this Array. 
int main() 
{ 
    for(int i = 0; i < 4; i++) 
    { 
     for(int j = 0; j < 7; j++) 
     { 
      if(numToMatch[i] == arrayOfNumbers[j]) 
      { 
       cout << "Num " << numToMatch[i] << " "; 
       cout << "matches " << arrayOfNumbers[j]; 
       cout << endl; 
      } 
     } 
    } 
} 
+0

Вы почти закончили его. 'j + 1' - это индекс, который вы хотите, когда начинаете учетную запись из 1. Вы уже напечатали' numToMatch [i] 'и' arrayOfNumbers [j] ', а затем добавили еще одну строку для печати ** index **. – iama

+0

Я думаю, что мои индексы верны? Я хотел бы знать, как добавить то, что я сопоставил с новым массивом с именем indexThatMatched. – user3222060

ответ

0

Добавлено только две линии.

int numToMatch[4] = {1,2,3,4}; 
int arrayOfNumbers[7] = {0, 1, 2, 3, 4, 5, 6}; 
int IndexThatMatched[4]; // Want to add to this Array. 
int main() 
{ 
    for(int i = 0; i < 4; i++) 
    { 
     IndexThatMatched[i] = -1; 
     for(int j = 0; j < 7; j++) 
     { 
      if(numToMatch[i] == arrayOfNumbers[j]) 
      { 
       cout << "Num " << numToMatch[i] << " "; 
       cout << "matches " << arrayOfNumbers[j]; 
       cout << endl; 
       IndexThatMatched[i] = j; 
      } 
     } 
    } 
} 

Если бы не было матча за numToMatch[k] тогда IndexThatMatched[k] будет -1.

В вашем примере IndexThatMatched будет: {1, 2, 3, 4}.
Это потому, что элементы numToMatch расположены в индексе 1-4 из arrayOfNumbers.

Кроме того, после этого запуска, для любого к в безопасном диапазоне:
numToMatch[k] == arrayOfNumbers[IndexThatMatched[k]]

0

Если вы действительно хотите узнать, C++ канаву массивы C-стиль и начать практиковать с контейнерами. Если объединить их с функциями в <algorithm> вы можете написать что-то вроде этого:

std::vector<int> MatchNums{1,2,3,4}; 
std::vector<int> NumsToMatch{0, 1, 2, 3, 4, 5, 6}; 
std::vector<int> MatchedNums; 

for (auto Number:NumsToMatch) 
{ 
    auto Match = std::find(MatchNums.begin(), MatchNums.end(), Number); 
    if (Match != MatchNums.end()) 
    { 
     MatchedNums.push_back(*Match); 
    } 
} 

for (auto i:MatchedNums) 
{ //Print out the found numbers: 
    std::cout << i << std::endl; 
} 

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

Смежные вопросы