Pomoc w projekcie, mnożenie i dodawanie macierzy.

0

Witam! Mam do napisania program w którym zdefiniuje dwie klasy macierzy i zrealizuje ich dodawanie mnożenie z wykorzystaniem "funkcji języka" które mam zamieszczać w programie na poszczególne oceny. Jestem początkującym "programistą" dlatego możliwe, że będe miał pare pytań i problemów z tym projektem. Mam nadzieje, że będę mógł liczyć na jakąś pomoc w tym temacie. Jak wybrałem zły dział to z góry przepraszam.

Na początku napisałem jedną klase "M3" w której zamieściłem metode do wypełniania przez użytkownika macierzy(tablicy dwuwymiarowej) oraz przeciązyłem operator "<<". No i na tym etapie stanąłem, ponieważ program sie kompiluje ale nie wyświetla mi elementów macierzy. Dostaje na ekranie pierwszy wiersz wypełniony trzema liczbami "-9.25596e+061" Mógłby ktoś wskazać co może być źle ?

Poniżej listing :

     #include <iostream>
#include <string> 

using namespace std;

 class M3 
 {
 public:
 double macierz[3][3]; 
 
void load_elements();
 
friend ostream & operator << (ostream &, M3 );
 };

void M3::load_elements()
 {
	double a,b,c,d,e,f,g,h,i ;
      cout << "Podaj elementy macierzy";
		cin >> a >> b >> c >> d >> e >> f >> g >> h >> i ; 
	     double macierz[3][3]= {{a,b,c},{d,e,f},{g,h,i}};

}

ostream & operator << (ostream & wyjscie, M3 mx)
	{
		for(int n=0;n<3;n++)
		   {wyjscie << "|" ;
			for(int m=0;m<3;m++)
			wyjscie << mx.macierz[3][3] << '\t' ;
				wyjscie << "|" << '\n' ;
				return wyjscie;
		}
		
}

int main()

{
	M3 mat;
	mat.load_elements();
	cout << mat;

	system("pause");
} 
1

Musisz uważać, dla macierzy powyżej 26 elementów skończy Ci się alfabet.

Funkcja load_elements jest bez sensu. Zrób to normalnie w pętli. Poza tym, teraz tworzysz zmienną lokalną, która natychmiast przestaje istnieć. Składowa macierz składa się cały czas z różnych nieokreślonych wartości.

0

Hmm nie bardzo wiem jak zrobić to wypełnianie przez użytkownika pętlą ale przerobiłem tą funkcje na coś takiego, żeby sprawdzic czy działa i niestety dalej jest ten sam problem co wczesniej.

void M3::load_elements()
 {
	
	double macierz[3][3];
           
           for(int i=0; i<3;i++)
            for(int j=0;j<3;j++)
            {
                macierz[i][j]=2;
                
                 }
 
1

Bo ten kod niewiele się różni pod względem sensu. Mianowicie w dalszym ciągu jest go pozbawiony.

Skoro Twoja klasa M3 ma zmienną składową macierz to po co tworzysz w tej funkcji zmienną lokalną i do niej wpisujesz te wartości? Wywal tę definicję double macierz[3][3]; z funkcji load_elements - wtedy będziesz operować na prawidłowej zmiennej macierz.

Jak zrobić wypełnienie przez użytkownika? Tak samo! zamiast przypisania 2 daj tam wczytanie z cin.

Dlaczego po prostu nie nauczysz się języka w którym chcesz pisać? I to nie jest żadna złośliwość z mojej strony - to naprawdę oszczędzi Ci problemów...

0

Teraz to zrozumiałem, dzięki za pomoc. Właśnie staram się uczyć tego języka ale wiadomo, że praktyka a znanie składni i definicji to trochę inna bajka dlatego staram się pytać bardziej doświadczonych. Biorę się dalej za pisanie i może coś mi sie uda sensownego stworzyć.

Hmm niestety w dalszym ciągu tego nie rozumiem albo robię coś źle bo dalej nie wyświetla mi właściwych elementów tablicy :
Nawet bez wczytywania liczb z klawiatury, przypisując jakąś liczbę do elementów dalej jest to samo...

 #include <iostream>
#include <string> 

using namespace std;
  
 class M3 
 {
 public:
     
	 double macierz[3][3];
 
 
  void load();
 
friend ostream & operator << (ostream &, M3 );
 };

void M3::load()
 {
	     
for(int i=0;i<3;i++)
	{
		for(int j=0;j<3;j++)
		 { 
			 macierz[i][j]= 3;
}
}
}
		
ostream & operator << (ostream & wyjscie, M3 mac)
	{
		for(int n=0;n<3;n++)
		   {wyjscie << "|" ;
			for(int m=0;m<3;m++)
				wyjscie << mac.macierz[3][3] << '\t' ;
			wyjscie << "|" << '\n' ;}
				return wyjscie;
}
		
int main()

{
	M3 mat;
	mat.load();
	cout << mat;

	system("pause");
}
0

Podbijam. Jakis pomysł co jest nie tak?

0

Hmm czyli problem leży po stronie mojego kompilatora. Dzięki za pomoc.

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