[C++] Funkcje oraz przeładowanie operatora.

Michal99
Użytkownik
Użytkownik
Posty: 95
Rejestracja: 12 wrz 2010, o 17:27
Płeć: Mężczyzna
Podziękował: 49 razy

[C++] Funkcje oraz przeładowanie operatora.

Post autor: Michal99 »

Witam. Mam problem z pracą domową.
Zdefiniuj klasę TCena opisującą cenę produktu. Klasa powinna przechowywać,
jako pola prywatne, cenę netto (Netto), stawkę VAT w procentach (VAT).
W klasie powinny znaleźć się następujące funkcje:
- konstruktor dwuargumentowy - zapisujący cenę netto i stawkę VAT,
- konstruktor jednoargumentowy - zapisujący cenę netto i przyjmujący 23%
jako stawkę VAT,
- konstruktor domniemany - zapisujący wartość 0 jako cenę netto i 23%
jako stawkę VAT,
- funkcja getBrutto() zwracająca cenę brutto (funkcja składowa klasy,
definicja funkcji umieszczona poza definicją klasy),
- funkcja wyświetlająca cenę brutto w postaci xx.xx PLN (przeładowanie
operatora <<),
- funkcja getNetto() zwracająca wartość pola Netto (funkcja składowa klasy,
definicja funkcji umieszczona wewnątrz definicji klasy),
- funkcja getVAT() zwracająca wartość pola VAT (funkcja składowa klasy,
definicja funkcji umieszczona wewnątrz definicji klasy),
- funkcja setNetto() zapisująca nową wartość pola Netto (funkcja składowa
klasy, definicja funkcji umieszczona wewnątrz definicji klasy),
- funkcja setVAT() zapisująca nową wartość pola VAT (funkcja składowa
klasy, definicja funkcji umieszczona wewnątrz definicji klasy),
- funkcja Przecena(Procent) zmniejszająca cenę netto o Procent starej ceny
netto, np. Przecena(50) zmniejsza cenę o połowę (funkcja składowa klasy,
definicja funkcji umieszczona poza definicją klasy).
Pokaż w programie zastosowanie wszystkich zdefiniowanych funkcji.
Dopiero zacząłem nad tym pracować i doszedłem do czegoś takiego:

Kod: Zaznacz cały

#include <iostream>
using namespace std;
class TCena
{
	float netto;
	float vat;
public:
	TCena(float n, float v)
	{
		netto=n;
		vat=v;
	}
	TCena(float n)
	{
		netto=n;
		vat=0.23;
	}
	TCena()
	{
		netto=0;
		vat=0.23;
	}
	float getBrutto();
};
float TCena::getBrutto()
{
	return netto*vat;
}
/*ostream & operator <<(ostream &ekran,)
{
	cout <<*/
int main()
{
	TCena z1(450,0.23);
	


}
Niestety, nie jest tego dużo. Wydaje mi się, że konstruktor dwuargumentowy, jednoargumentowy oraz domniemany są w porządku. Nie jestem pewien, czy funkcja getBrutto() powinna zawierać argumenty oraz wymieniony problem w temacie, jak przeładować operator <<? Proszę o pomoc oraz dziękuję za poświęcony czas.
Awatar użytkownika
Vardamir
Użytkownik
Użytkownik
Posty: 1913
Rejestracja: 3 wrz 2010, o 22:52
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 6 razy
Pomógł: 410 razy

[C++] Funkcje oraz przeładowanie operatora.

Post autor: Vardamir »

W getBrutto() powinno być raczej

Kod: Zaznacz cały

return netto*(1+vat);
Generalnie zastanów się w jaki sposób będziesz przechowywał stawkę vat. Tutaj widać, że chcesz jako ułamek. Tylko pytanie, czy w konstruktorze nie ma być to przekazywane tak : TCena(1999,18) co oznaczałoby 18% vatu.

Po co przeładowywać operator?
Michal99
Użytkownik
Użytkownik
Posty: 95
Rejestracja: 12 wrz 2010, o 17:27
Płeć: Mężczyzna
Podziękował: 49 razy

[C++] Funkcje oraz przeładowanie operatora.

Post autor: Michal99 »

Tak brzmi polecenie
- funkcja wyświetlająca cenę brutto w postaci xx.xx PLN (przeładowanie
operatora <<),
@EDIT:
Co do vatu, to zmieniłem wszędzie vat=23 i przy obliczaniu brutto podzieliłem vat na 100, aby przy podawaniu wartości w procentach wynik był poprawny.
Awatar użytkownika
Vardamir
Użytkownik
Użytkownik
Posty: 1913
Rejestracja: 3 wrz 2010, o 22:52
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 6 razy
Pomógł: 410 razy

[C++] Funkcje oraz przeładowanie operatora.

Post autor: Vardamir »

Tu masz dobrze opisane, razem z przykładem:

... tor%C3%B3w
ODPOWIEDZ