• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

błąd w kodzie c++

42 Warsaw Coding Academy
0 głosów
373 wizyt
pytanie zadane 10 kwietnia 2019 w C i C++ przez niezalogowany

nie rozumiem zachowania programu pomoże ktoś

#define dyr1(bbb) cout<<endl<<"***********"<<#bbb<<"="<<bbb;

void redukujRownanie (vector <double*>&wskaznik,int rozmiar){

    for (int j=0;j<rozmiar-1;j++){

        double* wskdiagonal=(wskaznik[j]-j-1);
        if(*wskdiagonal==0){
            if(!(podmien(wskaznik,j,rozmiar))) continue;
            wskdiagonal=(wskaznik[j]-j-1);
        }

        for(int i=j+1;i<rozmiar;i++) { 					/// w dłół od diagonalnej
        double *wskdiagonalx =(wskaznik[i]-j-1);
        if(*wskdiagonalx==0) continue;
                for (int k=j;k<rozmiar+1;k++) {				/// w lewo diagonalnej

                    double* wskdiagxk1=(wskaznik[i]-k-1);

                    //dyr1((*wskdiagxk1/=*wskdiagonalx));   /////////////////////// jak to włączone 
                   // *wskdiagxk1*=*wskdiagonal;
                    if(k==rozmiar)dyr1((*wskdiagxk1/=*wskdiagonalx));  // ////////////////////////////lub to
                  //  if(k==rozmiar)dyr1((*wskdiagxk1*=*wskdiagonalx)); /////////////////////////////lub to
                }
                for (int k=0;k<rozmiar-j;k++){
                    double* wskdiagk=wskdiagonal-k;
                    double* wskdiagxk=wskdiagonalx-k;
                    *wskdiagxk-=*wskdiagk;
                }
        }
    }

}


tablica A (tabica wejściowa)
---------------------------wyswietltablice(wskk,rozmiar)-----------------------------------------
           8,            7,            0,            5,            3,            2,            3,
           5,            2,            6,            9,            1,         -101,          100,
           5,           12,            7,            5,            5,            3,            5,
           3,           48,            8,            7,            6,          103,         -102,
          15,            2,            7,            3,            2,            9,            7,
           2,           18,            8,            4,            5,            3,         -104,

Tablica B (wyjśćie )
	//      dyr1((*wskdiagxk1/=*wskdiagonalx)); - a jak to włączone 
         //      dyr1((*wskdiagxk1*=*wskdiagonalx)); - lub to 
		if(k==rozmiar)dyr1((*wskdiagxk1/=*wskdiagonalx));
	//  if(k==rozmiar)dyr1((*wskdiagxk1*=*wskdiagonalx)); - lub to (to pierwsza kolumna bez zmian)

---------------------------wyswietltablice(wskk,rozmiar)-----------------------------------------
           8,            7,            0,            5,            3,            2,            3,
        0.05,           -5,            6,            4,           -2,         -103,           97,
           1,           10,            1,           -4,            4,          104,            2,
-5.82411e-005,           36,            1,            2,            1,          204,         -105,
   -0.153061,          -46,           -1,           -4,           -3,          110,            4,
  0.00480769,          -30,            0,           -3,            0,          104,         -107,

Tablica C pierwsza koluna bez zmian!!!
      		dyr1((*wskdiagxk1/=*wskdiagonalx)); - a jak to włączone 
       		dyr1((*wskdiagxk1*=*wskdiagonalx)); - lub to 
		if(k==rozmiar)dyr1((*wskdiagxk1/=*wskdiagonalx));
	 	if(k==rozmiar)dyr1((*wskdiagxk1*=*wskdiagonalx)); - lub to (to pierwsza kolumna bez zmian)
---------------------------wyswietltablice(wskk,rozmiar)-----------------------------------------
           8,            7,            0,            5,            3,            2,            3,
           5,           -5,            6,            4,           -2,         -103,            0,
           5,           10,            1,           -4,            4,            0,            0,
           3,           36,            1,            2,            0,            0,            0,
          15,          -46,           -1,            0,            0,            0,            0,
           2,          -30,            0,            0,            0,            0,            0,

 

komentarz 10 kwietnia 2019 przez Eryk Andrzejewski Mędrzec (164,260 p.)

A może coś więcej nam napiszesz? Co ma robić ten program, i czego w nim nie rozumiesz? Wybacz, ale ja tutaj mogę wyłącznie wnioskować, że redukuje on równania (cokolwiek to znaczy). Zmienne o nazwach: wskaznik, bbb i wskdiagxk1 za dużo też nie wyjaśniają. sad

1 odpowiedź

+1 głos
odpowiedź 10 kwietnia 2019 przez wiktoz Mądrala (7,060 p.)
Co ty w ogóle chcesz zrobić tym programem? Tutaj panuje taki chaos, że lepiej to skasować i rozpocząć pracę od nowa. Może opisz co ten program ma robić to jakoś Ci pomogę.
komentarz 10 kwietnia 2019 przez niezalogowany
Chciałem poćwiczyć wskaźniki i generalnie lubię wiedzieć dlaczego program nie działa, jak nie zrozumiem to nie zapamiętam. A to taka wprawka ćwiczebna.  Algorytm rozwiązywania równań metodą Gaussa jest całkiem fajny w sieci i na wskaźnikach więc można to sobie ogarnąć. Wcześniej zrobiłem i działał całkiem fajne. Tylko jak było dużo zer to głupiał. Rozwiązywał, ale zdarzyło mi się znaleźć błędne rozwiązanie w stosunku do Calca. Co dyskryminuje taki program.

A tu nie docierał do ostatniej kolumny mimo iż wyświetlał że powinien.

Jak ustawię dzielenie dla ostatniej kolumny to dzieli w innych przypadkach kolumna nie tknięta. A poza tym działy się inne dziwy, przy próbie przesuwania wskaźnika zamiast wsk[i] - k chciałem  zrobić wsk[i]--; i po przesuwał mi inne wskaźniki, a teraz robiłem próbę i na prostej tablicy i tego nie robi.

Podobne pytania

0 głosów
1 odpowiedź 186 wizyt
pytanie zadane 21 marca 2023 w C i C++ przez bananen Nowicjusz (170 p.)
0 głosów
2 odpowiedzi 605 wizyt
pytanie zadane 27 listopada 2018 w C i C++ przez Alan Kruszyński Obywatel (1,410 p.)
0 głosów
3 odpowiedzi 343 wizyt
pytanie zadane 14 stycznia 2016 w C i C++ przez Sebastian R Obywatel (1,110 p.)

93,379 zapytań

142,380 odpowiedzi

322,533 komentarzy

62,734 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...