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

Konstruktor i Destruktor z uzyciem tablic C++

0 głosów
1,017 wizyt
pytanie zadane 3 stycznia 2016 w C i C++ przez jkiesiak Nowicjusz (120 p.)

Czesc ucze sie programowania powoli, c++. Potrzebuje pomocy z konstruktorem i destruktorem. Oto mój kod: 

 

MAIN :

  1. #include <iostream>
  2. #include "macierz.h"
  3. using namespace std;
  4. //class Macierz;
  5. int main()
  6. {
  7.     Macierz m1(1,1,1,1,1,1,1,1,1);
  8.     m1.wczytaj();
  9.     m1.oblicz();
  10.     m1.wypisz();
  11.  //   cout << "Hello world!" << endl;
  12.     return 0;
  13. }

 

teraz macierz.h

 

  1. #include <iostream>
  2. class Macierz{
  3.     //atrybuty
  4.     int tab[8];
  5.     int wyz;
  6.     int pom1,pom2;
  7. public:
  8.     //metody
  9.     //Macierz(int=1,int=1,int=1,int=1,int=1,int=1,int=1,int=1,int=1);
  10.     Macierz(int,int,int,int,int,int,int,int,int);
  11.     ~Macierz();
  12.     void wczytaj();
  13.     void oblicz();
  14.     void wypisz();
  15. };

 

i teraz macierz.cpp

 

  1. #include <iostream>
  2. #include "macierz.h"
  3. using namespace std;
  4. class Macierz;
  5. void Macierz::wczytaj(){
  6.     cout<<"Wpisz macierz od 0 do 8"<<endl;
  7.     for( int i=0; i<9; i++){
  8.         cout<<"Komorka "<<i<<" ="<<endl;
  9.         cin>>tab[i];
  10.     }
  11. }
  12. void Macierz::oblicz(){
  13.     cout<<"Obliczam wyznacznik";
  14.     pom1=(tab[0]*tab[4]*tab[8])+(tab[1]*tab[5]*tab[6])+(tab[2]*tab[3]*tab[7]);
  15.   //  cout<<"Pom1 wynosi = "<<pom1<<endl;
  16.     pom2=(tab[2]*tab[4]*tab[6])+(tab[0]*tab[5]*tab[7])+(tab[1]*tab[3]*tab[8]);
  17.    // cout<<"Pom2 wynosi = "<<pom2<<endl;
  18.     wyz=pom1-pom2;
  19. }
  20. void Macierz::wypisz(){
  21.     cout<<"Wyznacznik wynosi = "<<wyz<<endl;
  22. }
  23. Macierz::Macierz (int mac[1],int mac[2], int mac[3],int mac[4],int mac[5], int mac[6],int mac[7],int mac[8], int mac[9]){
  24.     tab[0]=int mac[1];
  25.     //for(int k=0;k<10)
  26.     tab[1]=int mac[2];
  27.     tab[2]=int mac[3];
  28.     tab[3]=int mac[4];
  29.     tab[4]=int mac[5];
  30.     tab[5]=int mac[6];
  31.     tab[6]=int mac[7];
  32.     tab[7]=int mac[8];
  33.     tab[8]=int mac[9];
  34. }
  35. Macierz::~Macierz(){
  36.     cout<<"Zniszczono obiekt macierz";
  37. }

Debugger cały czas wyświetla błąd w macierz.cpp w 23 linijce 

1 odpowiedź

0 głosów
odpowiedź 3 stycznia 2016 przez Adriqun Początkujący (290 p.)
edycja 3 stycznia 2016 przez Adriqun
Po 23 linijce masz dziwny zapis: przypisujesz np dla tab[ 5 ] = int mac[ 6 ] ( tworzysz nowego int'a mac[ 6 ]? ), usuń inty kolejno dla tab'ow i powinno pomoc

Edit:

Możesz to zrobić tak:

1. W main'e przesyłasz tablice[ 10 ] do konstruktora, w pliku macierz.h zapisujesz Macierz::Macierz( int [] ), w pliku macierz.cpp zapisujesz Macierz::Macierz( mac[ 10 ] ) i przypisujesz np tab[ 1 ] = mac[ 2 ] itd

2. W main'e nie zmieniasz nic, w pliku macierz.h zapisujesz Macierz::Macierz( int, int, int, int, int, int, int, int, int, int ), w pliku macierz.cpp zapisujesz Macierz::Macierz( int mac, int mac1, int mac2, int mac3... int mac9 ) i przypisujesz np tab[ 1 ] = mac2;

Podobne pytania

0 głosów
2 odpowiedzi 427 wizyt
pytanie zadane 13 grudnia 2016 w C i C++ przez klap Początkujący (410 p.)
–4 głosów
0 odpowiedzi 664 wizyt
pytanie zadane 17 października 2017 w C i C++ przez p1erut Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 640 wizyt
pytanie zadane 14 sierpnia 2020 w C i C++ przez lujasjeden Użytkownik (860 p.)

93,742 zapytań

142,678 odpowiedzi

323,297 komentarzy

63,326 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...