[c] rekurencja w Borland C++, błąd przy kompilacji

kawafis44
Użytkownik
Użytkownik
Posty: 474
Rejestracja: 22 paź 2007, o 20:55
Płeć: Mężczyzna
Lokalizacja: Gliwice
Podziękował: 416 razy
Pomógł: 2 razy

[c] rekurencja w Borland C++, błąd przy kompilacji

Post autor: kawafis44 »

Kod: Zaznacz cały

float Calculate_determinant(int letter_nr, int my_rows[255], int my_columns[255])
{
   
   //...

   switch (order)
   {
      case 1 : return local_matrix.values[0][0]; break;   //matrix[letter_nr] - local_matrix
      case 2 : return ((local_matrix.values[0][0]*local_matrix.values[1][1])-(local_matrix.values[1][0]*local_matrix.values[0][1])); break;
      case 3 : return ((local_matrix.values[0][0]*local_matrix.values[1][1]*local_matrix.values[2][2])+(local_matrix.values[1][0]*local_matrix.values[2][1]*local_matrix.values[0][2])+(local_matrix.values[2][0]*local_matrix.values[0][1]*local_matrix.values[1][2])-(local_matrix.values[2][0]*local_matrix.values[1][1]*local_matrix.values[0][2])-(local_matrix.values[0][0]*local_matrix.values[2][1]*local_matrix.values[1][2])-(local_matrix.values[1][0]*local_matrix.values[0][1]*local_matrix.values[2][2])); break;
   }

   //...

}
Warning W8066 calc.c 618: Unreachable code in function Calculate_determinant

618 to linijka z 'case 1:'

co to ma znaczyć? czyżby Borland C++ 5.5.1 nie obsługiwał rekurencji ?
pozdro!

zapraszam: https://matematyka.pl/viewtopic.php?t=57456
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

[c] rekurencja w Borland C++, błąd przy kompilacji

Post autor: soku11 »

To poprostu warning

Kod: Zaznacz cały

case 1 : return local_matrix.values[0][0]; break;
Oznacza to, ze jest jakis nieosiagaln kod w tej linijce. Oczywiscie odrazu widac, ze jest nim polecenie break; Funkcja dla case 1: zwraca wartosc local_..., wiec sie dalej nie wykonuje. Skasuj tego break; i bedzie spokoj (tak mysle). POZDRO
kawafis44
Użytkownik
Użytkownik
Posty: 474
Rejestracja: 22 paź 2007, o 20:55
Płeć: Mężczyzna
Lokalizacja: Gliwice
Podziękował: 416 razy
Pomógł: 2 razy

[c] rekurencja w Borland C++, błąd przy kompilacji

Post autor: kawafis44 »

no tak tylko że w DevC++ wszystko mi działało

a tutaj w Borland też się kompiluje, ale jak wybiorę w programie exe ten element programu, który właśnie tę funkcję wykonuje, to mi się wysypuje program - po prostu wychodzi z konsoli

pomyślałem, że jak poprawię kod i nie będzie tego warninga to się nie będzie wysypywał - w DevC++ jeśli nie dałem break; to wykonywał po kolei case 1, case 2, case 3 nie wiadomo jakim cudem

pozdro!
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

[c] rekurencja w Borland C++, błąd przy kompilacji

Post autor: soku11 »

Dev cpp to dziwny program, bo tam mi tez wiele przydatnych warningow nie wyswietlalal... Wez w komentarz to return costam i zobacz jak sie zachowa program. Czy bedzie wtedy dzialal i nie wywalal warningow i ogolnie nie zwieszal jak sie go uruchomi... Btw. czy local_matrix.values[x][y] to na pewno tablica dwuwymiarowa typu float?? POZDRO
kawafis44
Użytkownik
Użytkownik
Posty: 474
Rejestracja: 22 paź 2007, o 20:55
Płeć: Mężczyzna
Lokalizacja: Gliwice
Podziękował: 416 razy
Pomógł: 2 razy

[c] rekurencja w Borland C++, błąd przy kompilacji

Post autor: kawafis44 »

tak, tablica dwuwymiarowa typu float o wymiarach [25][25]

dałem w komentarz, ale nie return costam, tylko break;

teraz zachowuje się dalej tak samo, czyli kompiluje się (tym razem bez warninga), ale po wybraniu opcji, która korzysta z tej funkcji, program się wyłącza (nie zawiesza jak np. w nieskończonej pętli czy coś takiego, ale po prostu wychodzi z programu).

pozdro!
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

[c] rekurencja w Borland C++, błąd przy kompilacji

Post autor: soku11 »

Jedyne co moge ci poradzic to wbic kilka printfow np przed z wartoscia order i do caseow z np numerem. Tak zebys wiedzial, gdzie sie krzaczy programik. BTW. Ja tez stosuje taki myk, ze wrzucam w komentarze wywolania od poczatku do konca, pozniej przechodze do nastepnej linii z komentarzem wlaczam, pozniej do nastepnej itd, az znajde w ktorej linii program konczy dzialanie. Twoj przypadek to mi sie kojarzy tylko z tym, ze cos masz w buforze klawiatury i program sie wylacza bo 'sam wciska przycisk'. POZDRO
ODPOWIEDZ