Ł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
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.