Problem z zadaniem z instrukcja switch

0
int punkty;
cout << "Wpisz liczbę punktow uzyskanych z egzaminu, a dowiesz sie jaka ocene dostales" << endl;
cin >> punkty;

switch (punkty)
{
    case:
        cout << "Twoja ocena to 2, nie zdales" << endl;
        break;
}

Chciałbym ustawić zakres przykładowo od 1 do 25 pkt dostajesz dwóje, itp itd. Niestety nie mogę nic znaleźć na internecie a jak teoretycznie zakres punktowy wynosiłby od 0-100 to musiałbym 100 casow robić.

Da radę coś takiego zrobić? minus i .. nie działają, albo popełniam błąd. Z góry dziękuję za pomoc.

1

Nie da się, jak chcesz takie zakresy to lepiej zrób to ifami.

1

switch case się do tego nie nadaje - sprawdza tylko czy zmienna ma daną wartość (nie rozpoznaje warunków logicznych), zrób to za pomocą instrukcji warunkowych.

0

Czasem, rzadko, udaje się zastosować switch w problemie jak tutaj
a) dzielenie całkowitoliczbowe wejścia przez 25
b) switchem uporać się ze zmniejszonym wynikiem 0..5

0

Jeżeli używasz GCC, to jest takie rozszerzenie

#include <iostream>

int main() {
    switch(12) {
    case 1 ... 100:
        std::cout << "OK\n";
    }
}

Ale to nieprzenośne.

Być może będzie to w przyszłych wersjach, propozycja do standardu wygląda tak:

inspect (n) {
    within{1, 10}: {
        std::cout << n << " is in [1, 10].";
    }
    __: {
       std::cout << n << " is not in [1, 10].";
    }
}

Może się doczekamy w C++23/26.

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