logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak poprawnie mnożyć macierz przez punkt w C++? Kod i błędy

Mercii 18 Mar 2006 22:37 1359 1
REKLAMA
  • #1 2430531
    Mercii
    Poziom 10  
    Posty: 51
    Witam
    Pisze sobie prosty program , ktory ma operwoac na punkcie tzn rotacjam, sklaowanie i musze mnozyc w nim macierze. Narazie musze wymnozyc macierz przez punkt.
    I cos mi nie wychodzi.
    
    #include <iostream.h>
    
    class macierz
    {
    	public:
    		int tab[2][2];
    		macierz(int z,int a,int b);
    		macierz mnoz(macierz);
    		//punkt mnozpkt(punkt);
    macierz(){};		
    
    void wys()
    {
    cout<<"|"<<tab[0][0]<<" , "<<tab[0][1]<<" , "<<tab[0][2]<<"|"<<endl;
    cout<<"|"<<tab[1][0]<<" , "<<tab[1][1]<<" , "<<tab[1][2]<<"|"<<endl;
    cout<<"|"<<tab[2][0]<<" , "<<tab[2][1]<<" . "<<tab[2][2]<<"|"<<endl;
    }
    };
    class punkt
    {
    	public:
    	int x,y;
    
    	void ustaw(int a, int b)
    	{
    		x=a;
    		y=b;
    	}
    	void pokaz()
    	{
    	cout<<"["<<x<<"]["<<y<<"]"<<endl;
    	}
    	void mnozpkt(macierz m);
    
    };
    macierz::macierz(int z,int a,int b)
    {
    	tab[0][0]=a;
    	tab[0][1]=0;
    	tab[0][2]=0;
    	tab[1][0]=0;
    	tab[1][1]=b;
    	tab[2][0]=0;
    	tab[2][1]=0;
    	tab[2][2]=1;
    
    }
    /*punkt macierz::mnozpkt(punkt p){
    punkt tym;
    	tym.x=tab[0][0]*p.x+tab[0][1]*p.y+tab[0][2]*1;
    	return tym;
    	//cout<<tym.x;
    }*/
    void punkt::mnozpkt(macierz m){
    x=(m.tab[0][0]*x)+(m.tab[1][1]*y)+(m.tab[2][2]*1);
    }
    	
    
    int main(void)
    {
    int a,b;
    	punkt p1;
    	cout<<"Wprowadz x ";
    	cin>>a;
    	cout<<"Wprowadz y ";
    	cin>>b;
    	macierz m1(1,a,b);
    	m1.wys();
    p1.ustaw(a,b);
    p1.pokaz();
    p1.mnozpkt(m1);
    p1.pokaz();
    m1.wys();
    return 0;
    	}
    
    

    Jak mam to zrobic aby dobre wyniki wychodzily???
  • REKLAMA
  • #2 2431424
    one_eddie
    Poziom 25  
    Posty: 973
    Pomógł: 62
    Ocena: 14
    zadeklarowales int tab[2][2]; czyli 2* 2 = cztery elementy w pamieci.

    A uzywasz 8:

       tab[0][0]=a;
       tab[0][1]=0;
       tab[0][2]=0;
       tab[1][0]=0;
       tab[1][1]=b;
       tab[2][0]=0;
       tab[2][1]=0;
       tab[2][2]=1;


    Zastanos sie najpierw nad tym co robisz z pamiecia. nastepnie zacznij szukac problemow w algorytmach.
REKLAMA