Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Filipbg avatar Filipbg 26 Точки

02. Position Of

 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

bool isFound = -1;

int main()
{
    int array2DRows = 0;
    int array2DCols = 0;
    cin >> array2DRows >> array2DCols;
    vector<int> array2D(array2DRows, array2DCols);
    for(int row = 0; row < array2DRows; ++row)
    for(int col = 0; col < array2DCols; ++col)
        cin >> array2D[col];

    int numberToFind = 0;
    cin >> numberToFind;
    for(vector<int>::iterator i = array2D.begin(); i != array2D.end(); ++i)
    {
        if(*i == numberToFind)
        {
            isFound = 1;
            //int foundAt = distance(array2D.begin(), numberToFind);
            cout << *i << " ";
        }
        else
        {
            isFound = 0;
        }
    }
    if(!isFound)
        cout << "not found" << endl;
    return 0;
}


Забих. Въртя итератора в цикъл и се опитвам да проверя дали числото е намерено в масива. Но неще да го намери. А пък и distance с 2D вектор не става за да намеря позицията на числото.

Тагове:
0
C++ Fundamentals
galin_kostadinov avatar galin_kostadinov 166 Точки
Best Answer

Привет!

1. Дефинирането да 2D вектор е по слединият начин:

vector<vector<int>> array2D(array2DRows, vector<int>(array2DCols));

2. Достъпването на елемент по индекс и запис от конзолния вход:

cin >> array2D[row][col];

3. Използвай същите вложени цикли за да откриеш и принтираш търсените индекси:

for(int row = 0; row < array2DRows; ++row)
    for(int col = 0; col < array2DCols; ++col)
if(array2D[row][col]== numberToFind)
{
    isFound = true;
    std::cout << row << " " << col << std::endl;
}

4. Като задаваш стойност на булева променлива всичко различно от 0 се взема за true;

bool isFound = 0; или еквивалентно bool isFound = false;

Поздрави!

0
Filipbg avatar Filipbg 26 Точки

Много благодаря за отговора. Немога да свикна с тези 2D вектори затова се бъркам. Не бях обърнал внимание, че съм сложил bool на -1. Благодаря за подскаската.

1
galin_kostadinov avatar galin_kostadinov 166 Точки

Да добавя  още нещо:

if(*i == numberToFind)
{
    isFound = 1;
    //int foundAt = distance(array2D.begin(), numberToFind);
    cout << *i << " ";
}
else
{
    isFound = 0;
}

Тази проверка докато не намира елемент ще ти дава false, след това може да немери някой елемент и ще го промениш на true, като спре на да намира елементи пак ще ти дате false;

Затова още при дефинираноте на bool isFound = 0 - му задай false и само ако намериш нещо тогава го променяш на bool isFound = true;

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.