amirak20 Ответов: 2

Нахождение группы целых чисел в векторе


В моей задаче я должен найти, существуют ли числа между 40-50 в векторе, и если они существуют, то каков их индекс.

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

Что я уже пробовал:

void Findthem( vector<cam> & W){
    int cnt = 0;
    vector <int> r = {40,41,42,43,44,45,46,47,48,49,50};  //wanted ages
    for (int i=0; i<W.size(); i++)
    {
        for (int j=0; j<11; j++)
        {
            if ( W[i].age != r[j] )
            {
                cnt++;
                
            }
        }
    }



void Findthem( vector<cam> & W){
    int cnt = 0;
    for (int i=0; i<W.size(); i++)
    {
            if ( W[i].age > 40 && W[i].age < 50 )
            {
                cnt++;
                
            }
        
    }

2 Ответов

Рейтинг:
4

KarstenK

Эта задача-простая домашняя работа. Вам нужно сделать цикл от 40 до 50 и найти индекс.

vector <int> res;
for (int j=40; j<50; j++) 
{
  res.push_back(-1);//not found
        for (int i=0; i<W.size(); i++)
        {
            if ( W[i].age == j] )//found
            {               
               res[j-40] = i;//set index as result
               break;
            }
        }
    }
Научитесь пользоваться отладчик.


Рейтинг:
2

Richard MacCutchan

В обоих случаях вы подсчитываете вхождения, но когда функция возвращает этот счет, он теряется. Измените функцию так, чтобы она возвращала значение счетчика.


amirak20

вы имеете в виду, что я должен изменить тип функции на Int, а затем попросить ее вернуть cnt; ?

Richard MacCutchan

Да. Вам нужно понять область действия переменных и то, что она означает. Проверьте свою документацию по C++.