[C++]Operacje na strukturze.

Forum dotyczące ogólnie pojętego programowania - algorytmów, struktur danych, narzędzi programistycznych, itp - głównie w kontekście komputerów PC.
ODPOWIEDZ
Awatar użytkownika
zenzee
-
Posty: 75
Rejestracja: 25 lip 2008, 10:41
Lokalizacja: Samoa Zachodnie

[C++]Operacje na strukturze.

Post autor: zenzee » 11 wrz 2009, 21:37

Witam.
1).Porównuję dwie struktury.
2).Mnożę wszystkie składowe double w strukturze przez nową liczbę double.
3).Dodaję do składowych double w strukturze nową liczbę double.
4).Porównuję jedną składową double w strukturze z drugą w innym obiekcie.
5).Wyświetlam ile razy struktura była wywoływana.
Męczę się trochę z tym.
Czy takie cós może być.
Masakra ,co nie ! :???:

Kod: Zaznacz cały

#include<iostream>

struct STRUKTURA
{
	STRUKTURA(double K,double L);
   ~STRUKTURA()
   { }

   double DBL;
   double DBL1;
   friend STRUKTURA operator+(double DBL0,const STRUKTURA& STA);
   STRUKTURA operator*(double DOUB);
   STRUKTURA STR(STRUKTURA& STR1);
};

STRUKTURA:: STRUKTURA(double K,double L)
{
  using std::cout;
  static int Policz;
  cout<<"STRUKTURA UZYTA :"<< ++Policz<<" RAZY\n";  
  DBL = K;
  DBL1 = L;
}
//-----------------------------------------------------------------------
STRUKTURA STRUKTURA::STR(STRUKTURA& STR1)//porównywanie jednej zmiennej
{
	return STR1.DBL>= DBL ? STR1 : *this;//jeżeli zmienna DBL w strukturze STR1 >= 
	//od zmiennej DBL w strukturze STR to zwróć strukturę STR1
	//inaczej zwróć strukturę STR
}

//-----------------------------------------------------------------------
STRUKTURA STRUKTURA::operator*(double DOUB)//mnożenie
{
  STRUKTURA XXL(1.00,2.00);
  XXL.DBL = DBL * DOUB;
  XXL.DBL1 = DBL1 * DOUB;
  return XXL;
}
//-----------------------------------------------------------------------

bool operator==(STRUKTURA& ST,STRUKTURA& ST2)//porównywanie
   {
   bool T = (ST.DBL1 == ST2.DBL1 && ST.DBL == ST2.DBL);
   return (T);	
   }

//-------------------------------------------------------------------------
STRUKTURA operator+(double DBL0,STRUKTURA& STA)//dodawanie(friend-owa funkcja)
{
	STA.DBL1  = DBL0+ STA.DBL1;
    return STA;
}
//------------------------------------------------------------------------
int main()
{
   using std::cout;
   using std::cin;
  STRUKTURA S(1.00,2.00);
  STRUKTURA S2(1.00,2.00);
  
  if(S == S2)cout<<"OK!\n";
	
  S = S2.operator *(1.00);	
  cout<<S.DBL<<"  "<<S.DBL1<<"\n";

  S = 1.00 + S2;
  cout<<S.DBL<<"  "<<S.DBL1<<"\n";

  STRUKTURA WYNIK1(0.00,0.00);
  STRUKTURA WYNIK2(31.00,5.00);
  STRUKTURA WYNIK3(3.00,5.00);
  WYNIK1 = WYNIK2.STR(WYNIK3);//pierwsza zmienna ze struktury  WYNIK2 jest większa niż
  //pierwsza zmienna w strukturze WYNIK3
  
  cout<<WYNIK1.DBL<<"  "<<WYNIK1.DBL1<<"\n";//wyświetli 31.00  5.00

  cin.get(); 
  return 0;
}
Przeniosłem liczenie z destruktora do konstruktora i teraz liczy dobrze ilość wywołań
struktury(chyba,bo policzyło 6 razy). :razz:

ODPOWIEDZ