Instrukcja switch

0

Instrukcja switch, czy da sie podac zakres dla case np 0-10 to wypisuje cos itp.. czy trzeba robic case 1: case 2:.... case 10: ?

2

Nie da się, trzeba robić każdy case.

0

Ewentualnie, jeśli przedziały są równe i regularne (np. 1-10, 11-20, 21-30 itp.) możesz wprowadzić jakąś zmienną pomocniczą, która będzie miała wartość "dziesiątek" (czyli dla 1-10 będzie miała 0, 11-20 wartość 1, 21-30 wartość 2 itp.) a potem zrobić switch ale podając tą drugą zmienną jako wartość porównywaną.

Jeśli te przedziały są różnych rozmiarów, albo z innego powodu nie da się ich tak prosto określić, to zamiast robić case 1: case 2: itp., lepiej zrobić coś w stylu if (X>0 && X<11).

3

GCC ma takie rozszerzenie

#include <iostream>

int main(int argc, char **argv) {
    int i = 10;
    switch(i) {
    case 0 ... 100:
        std::cout << "OK\n";
    break;
    default:
        std::cout << "NOT OK\n";
    }
}
$ g++ test.cpp -o test
$ ./test 
OK
0

Wyjątki (liczby spoza zakresów) zrób jako poszególne case'y. A w default zrób if'ami zakresy.

1

Ja bym zrobił unorderewd_map na zakresy, następnie unordered_map na metody

1

Jak to ogromne zakresy to moze zwykla mapa i szukanko lower_bound.

1 użytkowników online, w tym zalogowanych: 0, gości: 1