Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- class NegativnaVrednost{
- };
- class Zdelka{
- private:
- char ime[100];
- float osnovnaCena;
- char vremeTraenje[100];
- int osnovenPopust = 10;
- int dopolnitelenPopust;
- int prodadeniKuponi;
- public:
- Zdelka(){}
- Zdelka(char *Ime, float OsnovnaCena, char *VremeTraenje, int OsnovenPopust,int ProdadeniKuponi){
- strcpy(ime, Ime);
- osnovnaCena = OsnovnaCena;
- strcpy(vremeTraenje, VremeTraenje);
- osnovenPopust = OsnovenPopust;
- dopolnitelenPopust = 0;
- prodadeniKuponi = ProdadeniKuponi;
- }
- int setPopust1(int popust){
- osnovenPopust = popust;
- }
- int cena_so_popust(){
- return osnovnaCena - (osnovnaCena * osnovenPopust + dopolnitelenPopust) / 100;
- }
- friend ostream& operator<< (ostream &out, Zdelka &z)
- {
- out<<z.ime<<endl;
- out << "Trae do: "<< z.vremeTraenje << ", prodadeni kuponi: "<< z.prodadeniKuponi << ", cena: " << z.osnovnaCena << ", cena so popust: " << z.cena_so_popust()<< endl;
- return out;
- }
- int getDopolnitelenPopust(){
- return dopolnitelenPopust;
- }
- int getProdadeniKuponi(){
- return prodadeniKuponi;
- }
- };
- class FINKI_Zdelki {
- private:
- Zdelka *zdelki;
- int broj;
- public:
- FINKI_Zdelki(){
- broj = 0;
- zdelki = new Zdelka[broj];
- }
- FINKI_Zdelki& operator+= (Zdelka &z)
- {
- if(z.getDopolnitelenPopust() < 0){
- throw NegativnaVrednost();
- }
- else{
- Zdelka *tmp = new Zdelka[broj+1];
- for(int i = 0; i < broj; i++){
- tmp[i] = zdelki[i];
- }
- tmp[broj] = z;
- broj++;
- delete [] zdelki;
- zdelki = tmp;
- }
- return *this;
- }
- friend ostream& operator<< (ostream &out, FINKI_Zdelki &z)
- {
- for(int i = 0; i < z.broj; i++){
- out << z.zdelki[i];
- }
- return out;
- }
- void najprodavaniZdelki(){
- int suma = 0;
- for(int i = 0; i < broj; i++){
- suma += zdelki[i].getProdadeniKuponi();
- }
- int prosek = suma / broj;
- for(int i = 0; i < broj; i++){
- if(zdelki[i].getProdadeniKuponi() > prosek){
- cout << zdelki[i];
- }
- }
- }
- ~FINKI_Zdelki(){ delete [] zdelki;}
- };
- int main(){
- int testCase;
- cin >> testCase;
- char ime[100];
- float cena;
- char traeDo[50];
- int popust;
- int prodKuponi;
- if (testCase == 1){
- cout << "===== Testiranje na klasata Zdelka ======" << endl;
- cin.get();
- cin.getline(ime,100);
- cin >> cena;
- cin.get();
- cin.getline(traeDo,50);
- cin >> popust;
- cin >> prodKuponi;
- cout << "===== CONSTRUCTOR ======" << endl;
- Zdelka z(ime, cena, traeDo, popust, prodKuponi);
- cout << z;
- }
- if (testCase == 2){
- cout << "===== Testiranje na static clenovi ======" << endl;
- cin.get();
- cin.getline(ime,100);
- cin >> cena;
- cin.get();
- cin.getline(traeDo,50);
- cin >> popust;
- cin >> prodKuponi;
- cout << "===== CONSTRUCTOR ======" << endl;
- Zdelka z(ime, cena, traeDo, popust, prodKuponi);
- cout << z;
- z.setPopust1(15);
- cout << z;
- }
- if (testCase == 3){
- cout << "===== Testiranje na klasata FINKI-Zdelki ======" << endl;
- cout << "CONSTRUCTOR" << endl;
- FINKI_Zdelki fz;
- int n;
- cin >> n;
- cout << "OPERATOR +=" << endl;
- for(int i = 0; i < n; ++i) {
- cin.get();
- cin.getline(ime,100);
- cin >> cena;
- cin.get();
- cin.getline(traeDo,50);
- cin >> popust;
- cin >> prodKuponi;
- Zdelka z(ime, cena, traeDo, popust, prodKuponi);
- try{
- fz += z;
- }
- catch(NegativnaVrednost) {
- cout << "Frlam isklucok nevalidna vrednost" << endl;
- }
- }
- cout << fz <<endl;
- Zdelka x("Pica po izbor", 250, "01.10.2016", 42, 15);
- FINKI_Zdelki fz1 = fz;
- try{
- fz+=x;
- }
- catch(NegativnaVrednost) {
- cout << "Frlam isklucok nevalidna vrednost" << endl;
- }
- cout << fz << endl;
- cout << fz1 << endl;
- }
- if (testCase == 4){
- cout << "===== Testiranje na operatorot += (celosna verzija) ======" << endl;
- FINKI_Zdelki fz;
- int n;
- cin >> n;
- cout << "OPERATOR +=" << endl;
- for(int i = 0; i < n; ++i) {
- cin.get();
- cin.getline(ime,100);
- cin >> cena;
- cin.get();
- cin.getline(traeDo,50);
- cin >> popust;
- cin >> prodKuponi;
- Zdelka z(ime, cena, traeDo, popust, prodKuponi);
- try{
- fz += z;
- }
- catch(NegativnaVrednost) {
- cout << "Frlam isklucok nevalidna vrednost" << endl;
- }
- }
- cout << fz;
- }
- if (testCase == 5){
- cout << "===== Testiranje na metodot najprodavaniZdelki ======" << endl << endl;
- FINKI_Zdelki fz;
- int n;
- cin >> n;
- for(int i = 0; i < n; ++i) {
- cin.get();
- cin.getline(ime,100);
- cin >> cena;
- cin.get();
- cin.getline(traeDo,50);
- cin >> popust;
- cin >> prodKuponi;
- Zdelka z(ime, cena, traeDo, popust, prodKuponi);
- try{
- fz += z;
- }
- catch(NegativnaVrednost) {
- cout << "Frlam isklucok nevalidna vrednost" << endl;
- }
- }
- cout << "Site zdelki:" << endl;
- cout << fz << endl;
- cout << "Najprodavani zdelki:" << endl;
- fz.najprodavaniZdelki();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment