Ładny brzuch

Hej, mam problem z program pisanym w C++Builder 6. Wyskakuje bd "Case bypasses initalization of a local variable" przy case 2 i 6. Co z tym zrobi? Jak to poprawi? Z gry dziki za pomoc.

switch (opcja) {case '1': clrscr();             a++;             cout<<"Podaj rozmiar tablic: ";             cin>>N;     //wczytujemy rozmiar tablicy i ponizej tworzymy ja dynamicznie             short **kl_Idealny= new short *[N];  //tworzenie dynamiczne tablicy             short **kl_Oceniany= new short *[N]; //tworzenie dynamiczne tablicy}             break; case '2':           clrscr(); b++;    cout<<"Podaj ilosc klas: ";    cin>>K;  //wczytujemy ilosc klas    break;  case '3':          clrscr();   if (a==0)  cout<<"\nWykonaj punkt 1"; //warunek aby pkt 1 zostal wczesniej wykonany niz pkt 3   if (b==0) cout<<"\nWykonaj punkt 2";  //warunek aby pkt 2 zostal wczesniej wykonany niz pkt 3   if (a!=0 && b!=0)    { Tab (kl_Idealny, K);  //Tab () - funkcja ktora wypelnia losowymi wartosciami tablice     Tab (kl_Oceniany, K);     }   break; case '4':        clrscr(); cout<<"\n\tTablica Idealna:"; Wyswietl (kl_Idealny); //wyswietlanie tablicy idealnej cout<<"\n\tTablica Oceniana:"; Wyswietl (kl_Oceniany);  //wyswietalnie tablicy ocenianej break; case '5': clrscr();//liczenie kappa      float **wagi=new float  *[K];  //tablica dwuwymiarowa w  ktorej przechowujemy wagi      for (int c=0; c<K; c++ ) {wagi[c]=new float [K]; }      int **tab= new int *[K-1]; //tworzenie dynamiczne tablicy dwuwymiarowej      for (int b=0; b<K; b++ ) {tab[b]=new int [K-1];}  //w tej tablicy beda wartosci wystepowania "jest a powinno byc"      short **s_w_w= new short *[K];  //dynamiczna tablica suma w wierszu      short **s_w_k= new short *[K];   //dynamiczna tablica suma w kolumnie      Zero (s_w_w, K);  //wyzerowanie tablic s_w_w i s_w_k      Zero (s_w_k, K); //wyzerowanie tablicy tab i tablicy wag w for (int y=0; y<K; y++)   { for (int x=0; x<K; x++)  { tab[x][y]=0;}    } for (int y=0; y<K+1; y++)   { for ( int x=0; x<K+1; x++)  { wagi[x][y]=0;}    } //liczenie wag i wypelnianie tablicy int ab_s; int k_=K-1; for (int i=0; i<K; i++)    {for (int j=0; j<K; j++)       {ab_s=abs(i-j);       wagi[i][j]=1-(float(ab_s)/float(k_));}     } int s=0,k=0; //zmienne pomocnicze do szukania wartosci i miejsca w tablicy //WYPELNIANIE TABLICY OPOWIEDNIMI WARTOSCIAMI for (k=0; k<K; k++)    // przechodzimy od wartosci 0 do wartosci N w tablicy 2-wymiarowej   {  for (s=0; s<K; s++)   {for (int i=0; i<N; i++)  // przechodzimy po tablicach 1 wymiarowych    if (*kl_Idealny[i]==s && *kl_Oceniany[i]==k) (tab[s][k])++;   } //od for i    } // od for s //w tablicach s_w_w i s_w_k przechowujemy sumy wierszy i kolumn for (s=0; s<K; s++)     //miejsce w s_w_w  { for (k=0; k<K; k++)   *(s_w_w[s])=*(s_w_w[s])+tab[s][k];  } for (k=0; k<K; k++)     //miejsce w s_w_w  { for (s=0; s<K; s++)     *(s_w_k[k])=*(s_w_k[k])+tab[s][k];  } for (int i=0; i<K; i++)    {for (int j=0; j<K; j++)       {suma1=(tab[i][j])*(wagi[i][j]); suma1=suma1/N; POW=POW+suma1;       int g =*s_w_k[j];       int h=*s_w_w[i]; suma2=wagi[i][j]*h*g; suma2=suma2/(N*N); PEW=PEW+suma2;       }     } float KW=0; KW=(POW-PEW)/(1-PEW); cout<<"\n\tWazony wspolczynnik kappa:  "<<KW;   break;  case '6':          delete [] kl_Idealny;   delete [] kl_Oceniany;   for (b = 0; b < K; b++) {  delete [] tab[b]; }   delete [] tab;   delete [] wagi;   break;  }



Nie wiem co masz wczeniej w programie. Jeli chodzi o case 2 to prawdopodobnie zmienna b nie zostaa wczeniej (przed switch) zainicjowana.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •