Program się kompiluje ale nic nie wyswietla

0

Witam. Mam taki o to program skladajacy sie z 6 plików. Poniżej zamieszczam kod

 
plik wekt.h

class macierz;
class wekt
{
      double v[3]; 
      public:
             wekt (double v1=0, double v2=0, double v3=0)
      
             {
                          v[0] = v1; v[1] = v2; v[2] = v3; 
             }
             friend wekt iloczyn (const macierz &, const wekt &);      
             void wyswietl ();
};

-----------------------------------------------------------------------------

plik mac1.h

class wekt; 
class macierz 
{
     double mac[3][3];
      
     public:
           
             macierz();
            
             macierz (double t [3] [3] );
           
             friend wekt iloczyn (const macierz &, const wekt &);
      
};


-----------------------------------------------------------------------------

plik definicja_mac.cpp

#include <iostream>
#include "mac1.h"

macierz::macierz(double t [3] [3])
{
                        int i; int j;
                        for (i=0; i<3; j++)
                          for (j=0; j<3; j++)
                        mac [i] [j] = t[i] [j];
}

-------------------------------------------------------------------------

plik definicja_iloczyn.cpp

#include <iostream>
#include "wekt1.h"
#include "mac1.h"

wekt iloczyn (const macierz & m, const wekt & x)
{
     int i,j;
     double suma;
     wekt wynik;
     for (i=0; i<3; i++)
     {
         for (j=0, suma = 0; j<3; j++)
         suma += m.mac[i] [j] * x.v [j];
         wynik.v[i] = suma;
     };
     return wynik;
}


----------------------------------------------------------------------

plik definicja_wekt.cpp

#include <iostream>
#include "wekt1.h"

using namespace std;

void wekt::wyswietl()
{
     int i;
     for (i=0; i<3; i++) cout << v[i] << " " ;
}


---------------------------------------------------------------------

plik main.cpp

#include <iostream>
#include "wekt1.h"
#include "mac1.h"

using namespace std;

main()
{
      
      wekt w(1, 2, 3);
      wekt wynik;
      double tabl [3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
      macierz a = tabl;

      
     
      wynik = iloczyn(a ,w);
      wynik.wyswietl();
      
      
      cout << "KONIEC PROGRAMU";
      cout << "\n\n\n\n";
      system("PAUSE");
      
}


Wydaje się mi ze wszystko jest dobrze ale program nic nie wyswietla po prostu czarne okno, myślę ze najprawdopodobniej jest cos nie tak w main po tej linijce ---> macierz a = tabl; <---, nic kompilator nie wyswietla nawet cout << "KONIEC PROGRAMU";

0

Lekcja na dziś: debugger. Uruchamiasz kod pod debuggerem, przechodzisz go krok po kroku i voila, wiesz co się stało.

0

sprawdzalem debuggerem i nie pokazuje zadnycj bledow

0

Aaaa tam, sprawdzałeś :D

Pierwszy błąd:

macierz::macierz(double t [3] [3]) {
    int i, j;    // deklarowanie zmiennych w stylu C i poczatek Twoich klopotow
    for (i=0; i<3; j++)    // tu mamy nieskonczona petle
    // ...
}

Gdybyś pisał jak na C++ przystało to byś napisał:

macierz::macierz(double t [3] [3]) {
    for (int i = 0; i < 3; j++)    // tu dostałbyś błąd o nieznanej zmiennej j
        for (int j = 0; j < 3; j++)
            // ...
}

"Błąd" drugi, trzeci i czwarty:

// main ma zwracać int
int main() {
    // ...
    double tabl [3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} } ; // braklo kilku nawiasow
    // ...
    return 0;    // a tak ma zwracac ten int
}

Poza tym, nie podobają mi się Twoje pliki - ich nazwy i niekonsekwentne umieszczanie definicji metod i konstruktorów raz w plikach nagłówkowych, a raz w cpp. Brak też konstrukcji:

#ifndef NAGLOWEK_H
#define NAGLOWEK_H
// ... tu deklaracje klas
#endif // NAGLOWEK_H

Co prędzej czy później doprowadzi Cię do kolejnych kłopotów z podwójnymi deklaracjami

0

Poza tym debugger nie pokazuje błędów, tylko jak pisał Shalom przechodzi program krok po kroku. Wtedy widać, że nie dochodzisz do końca programu, a wisisz w tamtej pętli nie zmieniając zmiennej sterującej i.

1 użytkowników online, w tym zalogowanych: 0, gości: 1