Wpis z mikrobloga

#programowaniec++
#programowanie
#jezykc++
#C++
Uszanowanie,
Mam takie zadanie (patrz PNG) i totalnie nie ogarniam tablic, których elementami są obiekty.
Gdyby ktoś zechciał zerknąć na mój kod, wskazać błędy i wytłumaczyć byłbym bardzo wdzięczny.

#ifndef complexhpp
#define complex
hpp
#include
#include

using namespace std;
class complex{
friend class tab_complex;
public:
double re;
double im;
complex();
complex(double liczba);
complex(double rzeczywista, double zespolona);
double fun1();
double fun2();
double fun3();
double fun4();
double (complex::*tabwskfun[4])();
};
class tabcomplex{
friend ostream& operator<< (ostream& out, const complex tab[]);
public:
tab
complex();
private:
complex tab_c[10];
};
ostream& operator<< (ostream& out, const complex tab[]);

#endif /* complex_hpp */

#include "complex.hpp"
using namespace std;
complex::complex(){
re = 0;
im = 0;
tabwskfun[0] = &complex::fun1;
tabwskfun[1] = &complex::fun2;
tabwskfun[2] = &complex::fun3;
tabwskfun[3] = &complex::fun4;

}
complex::complex(double liczba){
re = liczba;
im = 0;
tabwskfun[0] = &complex::fun1;
tabwskfun[1] = &complex::fun2;
tabwskfun[2] = &complex::fun3;
tabwskfun[3] = &complex::fun4;
}
complex::complex(double rzeczywista, double zespolona){
re = rzeczywista;
im = zespolona;
tabwskfun[0] = &complex::fun1;
tabwskfun[1] = &complex::fun2;
tabwskfun[2] = &complex::fun3;
tabwskfun[3] = &complex::fun4;
}
double complex:: fun1(){
return re;
}
double complex:: fun2(){
return im;
}
double complex:: fun3(){
double kwadrat;
kwadrat = re * re + im * im;
return kwadrat;
}
double complex:: fun4(){
double pierwiastek;
pierwiastek = sqrt(re * re + im * im);
return pierwiastek;
}
tabcomplex::tabcomplex(){
complex tabc[10] = {complex(2,3), complex(3,2), complex(1,2), complex(2,1), complex(2,4),complex(2,3), complex(3,2), complex(1,2), complex(2,1), complex(2,2) };
}
ostream& operator<< (ostream& out, const tab
complex x){
for(int i = 0; i < 10; i++){
for(int j = 0; j < 4; j++){


}
}
return out;
}
#include "complex.hpp"

using namespace std;
int main() {
tab_complex test;
cout<< test;
return 0;
}
wojak142 - #programowaniec++
#programowanie
#jezykc++
#C++
Uszanowanie, 
Mam tak...

źródło: comment_1619780396QLIfRQCk1KoDvokD6vA570.jpg

Pobierz
  • 13
  • Odpowiedz
@wojak142 tak na szybko patrząc, to: używaj angielskich nazw, usuń duplikacje kodu (konstruktory), definiuj zmienne w jednym kroku- nie deklaruj ich linijkę wyżej, używaj initializer listy.
  • Odpowiedz
@wojak142: nie mam teraz za bardzo czasu, żeby przepisać ten kod, ale zdefiniuj sobie
using MemFun = double (complex::*)(void); - pomoże Ci ogarniać typ tych funkcji.
Potem w pętlach:

auto& complexObj = x.tab_c[i];
MemFun& func = complexObj.tab_wsk_fun[j];
out << (complexObj.*func)();

A... i przekazuj obiekty do funkcji przez const& lub & - tutaj pewnie const& nie przejdzie, bo masz funkcje nie const
  • Odpowiedz
@wojak142: generalnie to jest zadanie typu "dowalmy studentowi jak najwięcej ficzerów języka do zakodowania" bez zastanowienia nad sensem praktycznym i nauką dobrych praktyk, które potem wykorzysta w pracy zawodowej ( ͡° ͜ʖ ͡°)
  • Odpowiedz