Hirdetés
- A klasszikus átnevezős trükkhöz nyúl az AMD a mobil Ryzeneknél
- Pánikban a világ a Radeon RX 5000 és 6000 sorozat támogatása miatt
- Az AI miatt biztonságosabb az Android, mint az iPhone
- Hirtelen rájött az AMD, hogy mégsem szűnt meg egy funkció az egyes Radeonokon
- Aggódhatnak a amerikaiak: a Huawei újabb lépést tett a modern AI gyorsítók felé
- Amlogic S905, S912 processzoros készülékek
- Milyen alaplapot vegyek?
- 5.1, 7.1 és gamer fejhallgatók
- Az Intel szerint sokáig marad velünk az Intel 18A node
- Billentyűzet gondom van
- Pánikban a világ a Radeon RX 5000 és 6000 sorozat támogatása miatt
- Androidos tablet topic
- Samsung LCD és LED TV-k
- OLED monitor topic
- AIO-khoz optimalizált, háromkamrás toronyház a Corsair gondozásában
Új hozzászólás Aktív témák
- 
			
			  vimes senior tag Sziasztok, Alább látható az általam írt forráskód (a program két mátrixot ad össze, von ki, szoroz össze). A problémám, hogy a main függvényben, mikor az operator overloading-ot szeretném használni, arra a három sorra error-t kapok a fordítótól, de nem értem miért... 
 (Szerintem elég az operator overloading-os részt elolvasni a kódból, de mivel én nem tudom pontosan hol a hiba, ez nem 100%)#include <iostream>
 #include <iomanip>
 using namespace std;
 class Matrix{
 private:
 unsigned int sorok;
 unsigned int oszlopok;
 double** elemek;
 
 public:
 Matrix(unsigned int n, unsigned int m, double szam) : sorok(n), oszlopok(m){
 elemek = new double*[n];
 for(int i = 0; i < n; i++)
 {
 elemek[i] = new double[m];
 }
 for(int i = 0; i < n; i++)
 {
 for(int j = 0; j < m; j++)
 {
 elemek[i][j] = szam;
 }
 }
 }
 
 Matrix(unsigned int n, unsigned int m) : sorok(n), oszlopok(m){
 elemek = new double*[n];
 for(int i = 0; i < n; i++)
 {
 elemek[i] = new double[m];
 }
 for(int i = 0; i < n; i++)
 {
 for(int j = 0; j < m; j++)
 {
 cout << (i+1) << ". sor " << (j+1) << ". oszlop: ";
 double ertek;
 cin >> ertek;
 elemek[i][j] = ertek;
 }
 }
 cout << endl;
 }
 
 Matrix(Matrix &masik){
 sorok = masik.sorok;
 oszlopok = masik.oszlopok;
 elemek = new double*[masik.sorok];
 for(int i = 0; i < sorok; i++)
 {
 elemek[i] = new double[oszlopok];
 }
 for(int i = 0; i < sorok; i++)
 {
 for(int j = 0; j < oszlopok; j++)
 {
 elemek[i][j] = masik.elemek[i][j];
 }
 }
 }
 
 ~Matrix(){
 for(int i = 0; i < sorok; i++){
 delete[] elemek[i];
 }
 delete[] elemek;
 }
 
 unsigned int getSorok() const {return sorok;}
 
 unsigned int getOszlopok() const {return oszlopok;}
 
 double getElem(const unsigned int n, const unsigned int m) const {return elemek[n-1][m-1];}
 
 void setElem(const unsigned int n, const unsigned int m, const double szam){
 cout << "Mátrix(" << n << "x" << m << ") eleme: " << elemek[n-1][m-1] << endl;
 elemek[n-1][m-1] = szam;
 cout << "(" << n << "x" << m << ") új értéke: " << elemek[n-1][m-1] << endl;
 }
 
 void dispMatrix(){
 for(int i = 0; i < sorok; i++)
 {
 for(int j = 0; i < oszlopok; j++)
 {
 cout << left << setw(6) << elemek[i][j] << " ";
 }
 cout << endl;
 }
 }
 
 Matrix operator+(const Matrix &B){
 Matrix C(this->sorok, this->oszlopok, 0);
 if((this->sorok == B.sorok) && (this->oszlopok == B.oszlopok)){
 for(int i = 0; i < this->sorok; i++){
 for(int j = 0; j < this->oszlopok; j++){
 C.elemek[i][j] = this->elemek[i][j] + B.elemek[i][j];
 }
 }
 return C;
 }
 else{
 cout << "A mátrixokon a '+' művelet nincs értelmezeve!" << endl;
 return C;
 }
 }
 
 Matrix operator-(const Matrix &B){
 Matrix C(this->sorok, this->oszlopok, 0);
 if((this->sorok == B.sorok) && (this->oszlopok == B.oszlopok)){
 for(int i = 0; i < this->sorok; i++){
 for(int j = 0; j < this->oszlopok; j++){
 C.elemek[i][j] = this->elemek[i][j] - B.elemek[i][j];
 }
 }
 return C;
 }
 else{
 cout << "A mátrixokon a '-' művelet nincs értelmezeve!" << endl;
 return C;
 }
 }
 
 Matrix operator*(const Matrix &B){
 Matrix C(this->sorok, B.oszlopok, 0);
 if(this->oszlopok == B.sorok){
 for(int i = 0; i < this->sorok; i++){
 for(int j = 0; j < B.oszlopok; j++){
 int szum = 0;
 for(int k = 0; k < this->oszlopok; k++){ // lehetne akár k < B.getSorok() is, hiszen ez a feltétele a mátrixszorzásnak...
 szum += this->elemek[i][k] * B.elemek[k][j];
 }
 C.elemek[i][j] = szum;
 }
 }
 return C;
 }
 else{
 cout << "A mátrixokon a '*' művelet nincs értelmezeve!" << endl;
 return C;
 }
 }
 };
 int main(){
 //konstruktor kipróbálása
 Matrix A(3,3);
 Matrix B(3,3);
 
 //operator overloading kipróbálása
 Matrix C = A + B; //hibás elvileg...
 Matrix D = A * B; //hibás elvileg...
 Matrix E = A - B; //hibás elvileg...
 
 //dispMatrix(), getSorok(), getOszlopok()...
 cout << "C mátrix: A + B" << endl;
 C.dispMatrix();
 cout << "C mátrix dimenziója: " << C.getSorok() << "x" << C.getOszlopok() << "." << endl;
 
 cout << "D mátrix: A * B" << endl;
 D.dispMatrix();
 cout << "D mátrix dimenziója: " << D.getSorok() << "x" << D.getOszlopok() << "." << endl;
 
 cout << "E mátrix: A - B" << endl;
 E.dispMatrix();
 cout << "E mátrix dimenziója: " << E.getSorok() << "x" << E.getOszlopok() << "." << endl;
 
 //getElem(), setElem()...
 //válasszuk ki 'A' mártix egy tetszőleges elemét, és módosítsuk egy általunk választott értékre...
 int n, m;
 double v;
 cout << "'A' melyik elemét?" << endl;
 cout << "Oszlop: ";
 cin >> n;
 cout << "Sor: ";
 cin >> m;
 cout << "Erre az értékre: ";
 cin >> v;
 A.setElem(n, m, v);
 //kérjük le a módosított elem értékét még egyszer...
 cout << A.getElem(n, m) << endl;
 
 return 0;
 }Ezt kapom a g++ -tól: matrix2.cpp: In function ‘int main()’:
 matrix2.cpp:154:15: error: invalid initialization of non-const reference of type ‘Matrix&’ from an rvalue of type ‘Matrix’
 Matrix C = A + B;
 ^
 matrix2.cpp:46:3: note: initializing argument 1 of ‘Matrix::Matrix(Matrix&)’
 Matrix(Matrix &masik){
 ^
 matrix2.cpp:155:15: error: invalid initialization of non-const reference of type ‘Matrix&’ from an rvalue of type ‘Matrix’
 Matrix D = A * B;
 ^
 matrix2.cpp:46:3: note: initializing argument 1 of ‘Matrix::Matrix(Matrix&)’
 Matrix(Matrix &masik){
 ^
 matrix2.cpp:156:15: error: invalid initialization of non-const reference of type ‘Matrix&’ from an rvalue of type ‘Matrix’
 Matrix E = A - B;
 ^
 matrix2.cpp:46:3: note: initializing argument 1 of ‘Matrix::Matrix(Matrix&)’
 Matrix(Matrix &masik){
 ^Egyszerűen nem látom, hogy hol van a hiba a kódban, ami a fenti errort okozza...    Előre is köszönöm a segítséget! 
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Amlogic S905, S912 processzoros készülékek
- Milyen alaplapot vegyek?
- 5.1, 7.1 és gamer fejhallgatók
- Hogwarts Legacy teszt
- Óvodások homokozója
- Windows 11
- Luck Dragon: Asszociációs játék. :)
- Az Intel szerint sokáig marad velünk az Intel 18A node
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Sorozatok
- További aktív témák...
- Apple iPhone 13 Pro 256GB kék / 12 hó jótállás
- ASUS TUF Dash F15 - 15.6"FHD 144Hz - i7-11370H - 16GB - 1,5TB SSD - RTX 3060 6GB - Win11
- Thinkpad L13 Yoga i5-10210U 16GB 512GB 13.3", Touch gyári magyar világítós bill 360 Gar.: 1év
- Honor 200 Pro 512GB, Kártyafüggetlen, 1 Év Garanciával
- Kezdő Gamer PC-Számítógép! Csere-Beszámítás! I5 7500 / GTX 1050Ti / 16GB DDR4 / 128SSD+1TB HDD
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő
 
								 
 


