Nietypowy switch-case.

0

Witam, mam pewien problem. Sprowadzilem wszystko do prostego przykladu, zalezy mi na tym, by pula byla wartoscia losowa. Wiec raz bedzie case 0 ... 1, raz bedzie case 0 ... 60 i tak dalej. Jednakze mam problem z tym, ze nie moge w case uzyc wartosci 0 ... pula, bo oczywiscie wyrzuca blad przy kompilowaniu: [Error] case label does not reduce to an integer constant

 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(){
int i;   
int pula=50;
    
    printf("Podaj liczbe!\n");
    scanf("%d", &i);
        switch(i)
        {
            case 0 ... pula:
            {
                printf("Udalo Ci sie trafic w liczbe pomiedzy 0, a pula!\n");
                break;
            }
            default:
            {
                printf("Nie udalo Ci sie...\n");
            }
	    } 
        sleep(1);
}

Ktos moglby zdradzic jakiegos tricka jak sprawic tak, bym mogl operowac na case 0 ... pula, kiedy to pula wczesniej jest wyliczana i jest wartoscia losowa? [dla uproszczenia przykladu na chwile obecna jest wartoscia stala]

2
case 0:
case 1:
case 2:
   {
    printf("Udalo Ci sie trafic w liczbe pomiedzy 0 a 2!\n");
    break;
   }

lub zamień na if'a

0

Wlasnie po napisaniu tego uswiadomilem sobie, ze w tym wypadku lepiej bedzie z ifem. Dzieki. :)

2

Standard wyraźnie zakazuje zmiennych w labelkach §6.4.2 (stmt.switch)/2, co zresztą mówi Ci kompilator, więc pozostaje if.

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