Рефакторинг повторных проверок диапазона, которые используют операторы if

NarrowVision спросил: 13 октября 2017 в 06:02 в: c++

Ниже я прилагаю код с логическими утверждениями. Глядя на этот код, я вижу его очень повторяющимся.

Моя задача: сетка 9x9 дана мне с 9 ящиками внутри, я пытаюсь получить индексы для запуска цикла с (startRow/Col) to (startRow/Col+2).

vector<int> findBox(int row, int col){
    int startRow;
    int startCol;
    if(row <= 2){
        startRow = 0;
    } else if(row > 2 && row <= 5){
        startRow = 3;
    } else if(row > 5 && row <= 8){
        startRow = 6;
    }
    if(col <= 2){
        startCol = 0;
    } else if (col > 2 && col <= 5){
        startCol = 3;
    } else if(col > 5 && col <= 8){
        startCol = 6;
    }
    vector<int> v;
    v.push_back(startRow);
    v.push_back(startCol);
    return v;
}

Я ищу кого-нибудь, кто объяснит мне лучший способ. Или я должен просто попытаться изменить код и использовать switch?

Спасибо.

Jak

0 ответов