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

błąd w kodzie c++

Object Storage Arubacloud
0 głosów
193 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,040 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ź 113 wizyt
pytanie zadane 21 marca 2023 w C i C++ przez bananen Nowicjusz (170 p.)
0 głosów
2 odpowiedzi 452 wizyt
pytanie zadane 27 listopada 2018 w C i C++ przez Alan Kruszyński Obywatel (1,410 p.)
0 głosów
3 odpowiedzi 199 wizyt
pytanie zadane 14 stycznia 2016 w C i C++ przez Sebastian R Obywatel (1,110 p.)

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...