klasy, funkcje w kalkulatorze liczb zespolonych

0

oto moj kod... jest to kaltulator ktory ma liczyc na liczbach zespolonych... 4 dzialania +-/*.
Dopiero sie ucze programowania i wielu zasad w pisaniu kodu itp takze wybaczcie jakies odchyly :D
Ma pare problemow:

  1. Moglby mi ktos napisac tresc funkcji mnozenia i dzielenia?? w matematyce wiem jak to ma wygladac ale w programie tutaj w kodzie nie mam w ogóle pojecia... HELP
  2. Chcialbym aby program byl podzielony na pliki tzn kazda klasa w swoich dwoch plikach .h i .cpp
    Nie do konca wiem co gdzie ma byc... HELP (najlepiej jaby to ktos zrobil albo jakos zaznaczyl)...
  3. w funkcji main() w kazdym case powtarza sie sie cout i cin do wczytywania danych.... dalem przed switch ale przy uruchomieniu potem sa problemy gdy np wybiore 7... nie wiem jak sobie z tym poradzic...
#include <iostream> 
using namespace std; 

/////////////////////////////klasa complex////////////////////////////////////////////////                                       
class Complex
{ 
  public: 
    Complex(); 
    Complex(double _rzeczywista, double _urojona); 
    Complex(const Complex& wartosc); 
    Complex operator=(const Complex& a); 

    virtual ~Complex() {} 
 

   void UstawLiczbaRze(double wartosc); 
   void UstawLiczbaUro(double wartosc); 
   double UstawLiczbaRze(); 
   double UstawLiczbaUro(); 

 private:
	
    double urojona; 
    double rzeczywista; 
};
///////////////////////////koniec klasy complex////////////////////////////////////////// 




Complex::Complex() 
  : urojona(0) 
  , rzeczywista(0)
  
{ 
} 


Complex::Complex(const Complex& wartosc) 
{ 
  urojona=wartosc.urojona; 
  rzeczywista=wartosc.rzeczywista;
  
} 


Complex::Complex(double _rzeczywista, double _urojona) 
  : urojona(_urojona) 
  , rzeczywista(_rzeczywista) 
{ 
} 


void Complex::UstawLiczbaRze(double wartosc) 
{ 
  rzeczywista=wartosc; 
} 

void Complex::UstawLiczbaUro(double wartosc) 
{ 
  urojona = wartosc; 
}


 



double Complex::UstawLiczbaRze() 
{ 
  return rzeczywista; 
} 

double Complex::UstawLiczbaUro() 
{ 
  return urojona; 
} 



Complex Complex::operator=(const Complex& a) 
{ 
  return Complex(a); 
} 





//////////////////////////////////////////////klasa dodawanie/////////////////////////////////////////////
class dodawanie
{ 
  public: 
    dodawanie(const Complex& _a, const Complex& _b); 
    Complex dodaj();

  private: 
    Complex a; 
    Complex b; 
}; 
///////////////////////////////////////koniec klasy dodawanie//////////////////////////////////////////////
dodawanie::dodawanie(const Complex& _a, const Complex& _b) 
  : a(_a) 
  , b(_b) 
{ 
} 
///////////////////////////////////definicja funkcji dodawanie//////////////////////////////////////
Complex dodawanie::dodaj() 
{
	
  Complex suma; 
  suma.UstawLiczbaRze(a.UstawLiczbaRze()+b.UstawLiczbaRze()); 
  suma.UstawLiczbaUro(a.UstawLiczbaUro()+b.UstawLiczbaUro());
  return suma;
 
}

/////////////////////////////////koniec definicji dodawanie//////////////////////////////////////////////






//////////////////////////////////////////////klasa mnozenie/////////////////////////////////////////////
class mnozenie
{ 
  public: 
    mnozenie(const Complex& _a, const Complex& _b); 
    Complex pomnoz();

  private: 
    Complex a; 
    Complex b;
	
}; 
///////////////////////////////////////koniec klasy mnozenie//////////////////////////////////////////////
mnozenie::mnozenie(const Complex& _a, const Complex& _b) 
  : a(_a) 
  , b(_b) 
{ 
} 
///////////////////////////////////definicja funkcji mnozenie//////////////////////////////////////
Complex mnozenie::pomnoz() 
{
	
  Complex iloczyn;
  iloczyn.UstawLiczbaRze((a.UstawLiczbaRze()*b.UstawLiczbaRze())-(a.UstawLiczbaUro()*b.UstawLiczbaUro())); 
  iloczyn.UstawLiczbaUro((a.UstawLiczbaRze()*b.UstawLiczbaUro())+(a.UstawLiczbaUro()*b.UstawLiczbaRze()));
  return iloczyn;
 
}

/////////////////////////////////koniec definicji mnozenie//////////////////////////////////////////////






//----------------------------------------------------------------------------------------------
////////////////////////////////klasa odejmowanie//////////////////////////////////////////////////////
class odejmowanie
{ 
  public: 
    odejmowanie(const Complex& _a, const Complex& _b); 
    Complex odejm(); 
  private: 
    Complex a; 
    Complex b; 
};
/////////////////////////////////////////koniec klasy odejmowanie//////////////////////////////////////// 

odejmowanie::odejmowanie(const Complex& _a, const Complex& _b) 
  : a(_a) 
  , b(_b) 
{ 
} 
//////////////////////////////definicja funkcji odejmowanie/////////////////////////////////////////
Complex odejmowanie::odejm() 
{ 
  Complex odejmow; 
  odejmow.UstawLiczbaRze(a.UstawLiczbaRze()-b.UstawLiczbaRze()); 
  odejmow.UstawLiczbaUro(a.UstawLiczbaUro()-b.UstawLiczbaUro());
 return odejmow;
}
////////////////////////////////koniec definicji odejmowanie///////////////////////////////////////////



//////////////////////////////////////funkcja main///////////////////////////////////////////////////////
#include <iostream> 
using namespace std;
int main()
 

{
int czesc1a=0; //czesc rzeczywista liczby a
int czesc2a=0; //czesc urojona liczby a
int czesc1b=0; //czesc rzeczywista liczby b
int czesc2b=0; //czesc urojona liczby b

int q;         //zmienna pomocnicza q do wyboru czy liczyc czy nie

           cout<<"[----------------------------------------------------------]\n";
		   cout<<"[-----------------------KALKULATOR-------------------------]\n";
		   cout<<"[--------------------LICZBY ZESPOLONE----------------------]\n";
		   cout<<"[----------------------------------------------------------]\n";
		   cout<<"[----------------------------------------------------------]\n";
		   cout<<"[-------------------------------TOMASZ SZUREK  II EF-ZI ---]\n";
		   cout<<"[----------------------------------------------------------]\n\n\n";
		   cout<<"Program ten o nazwie KALKULATOR,\n"; 
		   cout<<"zawiera 4 proste dzialania: + - * /.\n\n";
		   cout<<"Jakie dzialanie chcesz obliczyc?\n\n";
		   cout<<"Jesli dodawanie   to wcisnij - 1\n";
		   cout<<"Jesli odejmowanie to wcisnij - 2\n";
		   cout<<"Jesli dzielenie   to wcisnij - 3\n";
		   cout<<"Jesli mnozenie    to wcisnij - 4\n";
		   cout<<"WYJSCIE...        to wcisnij - 0\n\n";
		   cout<<"Wybrales:  ";

           for(;;)
		   {
		   cin>>q;
		   if (q==0)
		   {
			   break;
		   }
		  

		                   
		   
			   switch(q)
			   {
			    case 1: //DODAWANIE       
					   {

	                       //wprowadzanie liczby a
                           cout<<"Podaj czesc rzeczywista liczby a:  ";
                           cin>>czesc1a;
                           cout<<"Podaj czesc urojona liczby a:      ";
                           cin>>czesc2a;
                           Complex a(czesc1a,czesc2a);
                           cout<<"Liczba a: "<<a.UstawLiczbaRze()<<"+"<<a.UstawLiczbaUro()<<"i\n\n";

                           //wprowadzanie liczby b
                           cout<<"Podaj czesc rzeczywista liczby b:  ";
                           cin>>czesc1b;
                           cout<<"Podaj czesc urojona liczby b:      ";
                           cin>>czesc2b;
                           Complex b(czesc1b,czesc2b);
                           cout<<"Liczba b: "<<b.UstawLiczbaRze()<<"+"<<b.UstawLiczbaUro()<<"i\n\n";
			   

  
                           dodawanie sumuj(a,b); 
                           Complex wynik=sumuj.dodaj(); 
                           cout << "Liczba a: "<<a.UstawLiczbaRze()<<"+"<<a.UstawLiczbaUro()<<"i\n"; 
                           cout << "Liczba b: "<<b.UstawLiczbaRze()<<"+"<<b.UstawLiczbaUro()<<"i\n"; 
                           cout << "a+b = "<<wynik.UstawLiczbaRze()<<" + "<<wynik.UstawLiczbaUro()<<"i\n\n"; 
					   }
                       break;
                              
                   case 2: //ODEJMOWANIE
					   {

						   //wprowadzanie liczby a
                           cout<<"Podaj czesc rzeczywista liczby a:  ";
                           cin>>czesc1a;
                           cout<<"Podaj czesc urojona liczby a:      ";
                           cin>>czesc2a;
                           Complex a(czesc1a,czesc2a);
                           cout<<"Liczba a: "<<a.UstawLiczbaRze()<<"+"<<a.UstawLiczbaUro()<<"i\n\n";

                           //wprowadzanie liczby b
                           cout<<"Podaj czesc rzeczywista liczby b:  ";
                           cin>>czesc1b;
                           cout<<"Podaj czesc urojona liczby b:      ";
                           cin>>czesc2b;
                           Complex b(czesc1b,czesc2b);
                           cout<<"Liczba b: "<<b.UstawLiczbaRze()<<"+"<<b.UstawLiczbaUro()<<"i\n\n";
			   
					     

  
                           odejmowanie sumuj(a,b); 
                           Complex wynik=sumuj.odejm(); 
                           cout << "Liczba a: "<<a.UstawLiczbaRze()<<"+"<<a.UstawLiczbaUro()<<"i\n"; 
                           cout << "Liczba b: "<<b.UstawLiczbaRze()<<"+"<<b.UstawLiczbaUro()<<"i\n"; 
                           cout << "a-b = "<<wynik.UstawLiczbaRze()<<" + "<<wynik.UstawLiczbaUro()<<"i\n\n"; 
					   }
                       break;
                             
                   case 3:  //DZIELENIE

					   {
						   //wprowadzanie liczby a
                           cout<<"Podaj czesc rzeczywista liczby a:  ";
                           cin>>czesc1a;
                           cout<<"Podaj czesc urojona liczby a:      ";
                           cin>>czesc2a;
                           Complex a(czesc1a,czesc2a);
                           cout<<"Liczba a: "<<a.UstawLiczbaRze()<<"+"<<a.UstawLiczbaUro()<<"i\n\n";

                           //wprowadzanie liczby b
                           cout<<"Podaj czesc rzeczywista liczby b:  ";
                           cin>>czesc1b;
                           cout<<"Podaj czesc urojona liczby b:      ";
                           cin>>czesc2b;
                           Complex b(czesc1b,czesc2b);
                           cout<<"Liczba b: "<<b.UstawLiczbaRze()<<"+"<<b.UstawLiczbaUro()<<"i\n\n";
			   
  
                           dodawanie sumuj(a,b); 
                           Complex wynik=sumuj.dodaj(); 
                           cout << "Liczba a: "<<a.UstawLiczbaRze()<<"+"<<a.UstawLiczbaUro()<<"i\n"; 
                           cout << "Liczba b: "<<b.UstawLiczbaRze()<<"+"<<b.UstawLiczbaUro()<<"i\n"; 
						   cout << "a/b = "<<wynik.UstawLiczbaRze()<<" + "<<wynik.UstawLiczbaUro()<<"i\n\n";
					   }
					   break;

                   case 4:  //MNOZENIE
					   {
					       //wprowadzanie liczby a
                           cout<<"Podaj czesc rzeczywista liczby a:  ";
                           cin>>czesc1a;
                           cout<<"Podaj czesc urojona liczby a:      ";
                           cin>>czesc2a;
                           Complex a(czesc1a,czesc2a);
                           cout<<"Liczba a: "<<a.UstawLiczbaRze()<<"+"<<a.UstawLiczbaUro()<<"i\n\n";

                           //wprowadzanie liczby b
                           cout<<"Podaj czesc rzeczywista liczby b:  ";
                           cin>>czesc1b;
                           cout<<"Podaj czesc urojona liczby b:      ";
                           cin>>czesc2b;
                           Complex b(czesc1b,czesc2b);
                           cout<<"Liczba b: "<<b.UstawLiczbaRze()<<"+"<<b.UstawLiczbaUro()<<"i\n\n";
			   
  
                           dodawanie sumuj(a,b); 
                           Complex wynik=sumuj.dodaj(); 
                           cout << "Liczba a: "<<a.UstawLiczbaRze()<<"+"<<a.UstawLiczbaUro()<<"i\n"; 
                           cout << "Liczba b: "<<b.UstawLiczbaRze()<<"+"<<b.UstawLiczbaUro()<<"i\n"; 
                           cout << "a*b = "<<wynik.UstawLiczbaRze()<<" + "<<wynik.UstawLiczbaUro()<<"i\n\n"; 
					   }
						   break;

                   default:
					   {
						 
					   cout<<"Nie podales zadnego odpowiednika dzialania.\n";
					   }
		    }
		      
			  cout<<"\nKolejna operacja to: "; 

		   }
		   
		   
			   
return 0;
}

///////////////////////////////////////////koniec funkcji main//////////////////////////////////////////

/*
/////////dzielenie///////////////////
z1 = a1 + b1i

z2 = a2 + b2i



z1 / z2 = (a2*b1 - a1*b2) / (a22 + b22)
////////////////////koniec dzielenia///////////////////


/////////////////mnozenie////////////////////////
z1 = (a1, b1)

z2 = (a2, b2)

z1*z2 = (a1*a2 - b1*b2, a1*b2 + a2*b1)
////////////////koniec mnozenia///////////////////
*/
0

Mogę Ci wysłać to co sam kiedyś napisałem:
http://wklej.org/id/43300/
http://wklej.org/id/43301/

0

projekt jest juz prawie ukonoczy tylko nie rozumiem tego bledu...

iloraz.UstawLiczbaRze((a.UstawLiczbaRze()*b.UstawLiczbaRze())+(a.UstawLiczbaUro()*b.UstawLiczbaUro()))/((a.UstawLiczbaRze()*a.UstawLiczbaRze())+(b.UstawLiczbaUro()*b.UstawLiczbaUro()));  //error C2296: '/' : illegal, left operand has type 'void' czemu??
  iloraz.UstawLiczbaUro((a.UstawLiczbaUro()*b.UstawLiczbaUro())-(a.UstawLiczbaRze()*b.UstawLiczbaUro()))/((b.UstawLiczbaRze()*b.UstawLiczbaRze())+(b.UstawLiczbaUro()*b.UstawLiczbaUro()));  //error C2296: '/' : illegal, left operand has type 'void' czemu??

ktos ma jakies pomysly??

0

bo w klasie Complex metoda UstawLiczbaXXX ma postac:

void UstawLiczbaRze(double wartosc); 

policz nawiasy i pewnie okaze sie ze wywolujesz nie te metode co sadzisz.. np:

iloraz.UstawLiczbaRze((a.UstawLiczbaRze()*b.UstawLiczbaRze())+(a.UstawLiczbaUro()*b.UstawLiczbaUro()))/((a.UstawLiczbaRze()*a.UstawLiczbaRze())+(b.UstawLiczbaUro()*b.UstawLiczbaUro()))

==

iloraz.UstawLiczbaRze(  (a.UstawLiczbaRze()*b.UstawLiczbaRze() )  + ( a.UstawLiczbaUro()*b.UstawLiczbaUro() )  )
     /
    ( (a.UstawLiczbaRze()*a.UstawLiczbaRze() ) + (b.UstawLiczbaUro()*b.UstawLiczbaUro() ) )

ps. jako ze zajrzales na forum i ie poprawiles tematu, czas/=2. popraw temat. czas: 18h

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