Polecenie switch...case i wybór danaych zawartych w tablicach po poleceniu switch.

0

Próbuje opracować program, którego zadaniem ma być wybór danych umieszczonych w tablicach i przeprowadzenie dalszych obliczeń.
Stosuje do wyboru danych tablice z danymi w sposób następujący:
oto krótki fragment kodu:

for (i=1;i<=g;i++)
{
switch(TabWar[i])
{
case 110:
int T1[]={0,1,2,3,4,6,7,8};
m1=8;
int T2[]={0,2,5,6,7,9,10};
m2=7;
int T3[]={0,6,7,10,11,12,13,14,16,18};
m3=10;            

min12=3;
max12=18;
min23=8;
max23=35;
break;

case 157: 
int T1[]={0,3,4,6,8,9,11};
 m1=7;
int T2[]={0,9,12,13,15,18,20};
 m2=7;
int T3[]={0,16,23,24,26,27,29,30};
 m3=8;

min12=12;
max12=29;
min23=31;
max23=45;
break;
}
}

Program się nie kompiluje, gdyż użyty tak napisany kod jest niepoprawny.
Proszę w tej sprawie o pomoc tz. o wskazówki jak to napisać poprawnie aby program kompilował się i wybierał dane do dalszych obliczeń.
Kompilator Borlane 5.5 z nakładką Relo2.

0
int i, min, max, g, m1, m2, m3, min12,max12, min23, max23;
    //int TabWar[/*???*/]; podaj rozmiar lub dane
    //int T1[]={0,1,2,3,4,6,7,8};
    //int T1[]={0,3,4,6,8,9,11};  zmien nazwe!
    int T2[]={0,2,5,6,7,9,10};
    //int T2[]={0,9,12,13,15,18,20}; zmien nazwe!
    int T3[]={0,6,7,10,11,12,13,14,16,18};
    // int T3[]={0,16,23,24,26,27,29,30}; zmien nazwe!
    for (i=1;i<=g;i++)
    {
        switch(TabWar[i])
        {
            case 110:
                m1=8;
                m2=7;
                m3=10;
                min12=3;
                max12=18;
                min23=8;
                max23=35;
            break;
            case 157:
                m1=7;
                m2=7;
                m3=8;
                min12=12;
                max12=29;
                min23=31;
                max23=45;
            break;
        }
    } 

Teraz powinno się skompilować. Za co minusy? Człowieku...!

0
static int T1_110[]={0,1,2,3,4,6,7,8};
static int T2_110[]={0,2,5,6,7,9,10};
static int T3_110[]={0,6,7,10,11,12,13,14,16,18};
static int T1_157[]={0,3,4,6,8,9,11};
static int T2_157[]={0,9,12,13,15,18,20};
static int T3_157[]={0,16,23,24,26,27,29,30};

static struct { int War, m1, m2, m3, min12, max12, min23, max23, *T1, *T2, *T3 } Tb[]=
  {
     { 110, 8, 7, 10, 3, 18, 8, 35, T1_110, T2_110, T3_110 },
     { 157, 7, 7, 8, 12, 29, 31, 45, T1_157, T2_157, T3_157 },
  };
const unsigned TbSize=sizeof(Tb)/sizeof(*Tb);

for(i=0;i<g;++i) // podejrzewam że TabWar też od zera się indeksuje
  {
   for(k=0;k<TbSize;++k)
     {
      if(TabWar[i]==Tb[k].War)
        {
         //tu masz te wszystkie wartości
         //np: Tb[k].m1, Tb[k].T1[j] itp
        }
     }
  }
0

Kompilator Borlane 5.5 z nakładką Relo2.
Znajdź może coś nowszego...

0

Dziękuje za zajęcie się moim problemem. Z podanych wskazówek skorzystałem, aczkolwiek z pewną modyfikacją.
Kompilator Borland 5.5 + Relo2 dobrze mi kompiluje programy napisane w języku C++.

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