Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstring>
- using namespace std;
- class Gitara { //За таа цел, треба да се креира класа Gitara (5 поени).
- private://Класата треба да содржи:
- char seriskibroj[25]; //Сериски број (низа од 25 знаци)
- double nabavna; //Набавна цена (реален број)
- int godina; //Година на производство (цел број)
- char tip[40]; //Тип (низа од 40 знаци)
- public:
- Gitara() {
- strcpy(this->seriskibroj, "");
- this->nabavna = 0.0;
- this->godina = 0;
- strcpy(this->tip, "");
- } //defaulten
- Gitara(char * tip, char * seriskibroj, int godina, double nabavna) {
- strcpy(this->seriskibroj, seriskibroj);
- this->nabavna = nabavna;
- this->godina = godina;
- strcpy(this->tip, tip);
- } //konstruktor so argumenti
- Gitara(const Gitara &g) {
- strcpy(this->seriskibroj, g.seriskibroj);
- this->nabavna = g.nabavna;
- this->godina = g.godina;
- strcpy(this->tip, g.tip);
- }//copy konstruktor
- Gitara &operator=(const Gitara &g){
- if(this!=&g) {
- strcpy(this->seriskibroj, g.seriskibroj);
- this->nabavna = g.nabavna;
- this->godina = g.godina;
- strcpy(this->tip, g.tip);
- }
- return *this;
- }
- bool daliIsti(Gitara &g) { //Да се дефинира метод daliIsti кој како аргумент ќе добие
- if(strcmp(this->seriskibroj, g.seriskibroj) == 0)
- return true;
- else return false;
- } //објект од тип Gitara и ќе ги спореди двете гитари според нивниот сериски број (5 поени)
- void pecati() { //Дополнително, за оваа класа да се направи функција pecati()
- cout<<seriskibroj<<" "<<tip<<" "<<endl;
- //за печатење на објектот во следниот формат (5 поени):
- }//_[СерискиБрој] [Тип] [Цена]_
- double getNabavna() {
- return nabavna;
- }
- int getGodina(){
- return godina;
- }
- char * getSeriski(){
- return seriskibroj;
- }
- char * getTip(){
- return tip;
- }
- };
- class Magacin { //Да се креира класа Magacin (5 поени)
- private: //која содржи:
- char ime[30]; //Име на магацинот (низа од 30 знаци)
- char lokacija[60]; //Локација на магацинот (низа од 60 знаци)
- Gitara * niza; //Низа од гитари кои ги поседува магацинот (динамички алоцирана низа од објекти од класата Gitara)
- int broj; //Број на објекти во низата (цел број)
- int godina; //Година на отвoрање (цел број)
- public://За класите да се дефинираат потребните конструктори
- Magacin(char * ime = "", char * lokacija = "", int godina=0) {
- strcpy(this->ime, ime);
- strcpy(this->lokacija, lokacija);
- this->godina = godina;
- this->broj = 0;
- this->niza = new Gitara[0];
- } // konstruktor so argumenti
- Magacin(const Magacin &m) {
- strcpy(this->ime, m.ime);
- strcpy(this->lokacija, m.lokacija);
- this->broj = m.broj;
- this->godina = m.godina;
- for(int i=0;i<m.broj;i++)
- this->niza[i] = m.niza[i];
- } // copy constructor
- Magacin &operator=(const Magacin &m) {
- if(this!=&m) {
- strcpy(this->ime, m.ime);
- strcpy(this->lokacija, m.lokacija);
- this->broj = m.broj;
- this->godina = m.godina;
- for(int i=0;i<m.broj;i++)
- this->niza[i] = m.niza[i];
- }
- return *this;
- }
- ~Magacin() {
- // delete [] niza;
- }// деструктор
- double vrednost() { //За класата Magacin да се дефинира метод double vrednost () што ќе ја пресметува
- double total = 0.0;//моменталната вредност на гитарите кои се наоѓаат во магацинот. Таа се пресметува
- for(int i=0;i<broj;i++)// како збир од вредноста на сите гитари од кои е составен магацинот (5 поени).
- total = total+niza[i].getNabavna();
- return total;
- }//Дополнително, за класата да се дефинираат функциите
- void dodadi(Gitara d) { //void dodadi(Gitara d) за сместување на нова гитара
- Gitara * tmp = new Gitara[broj+1];
- for(int i=0; i<broj; i++)
- tmp[i] = niza[i];
- tmp[broj++] = d;
- niza = tmp;
- } //во магацин (додавање на нов објект од класата Gitara во динамички алоцираната низа со гитари)
- void prodadi(Gitara p) { //void prodadi(Gitara p) за бришење на дадена гитара од магацинот (бришење на
- int count = 0;
- for(int i=0; i<broj; i++)
- if(niza[i].daliIsti(p) == false)
- count++;
- Gitara * tmp = new Gitara[count];
- count=0;
- for(int i=0; i<broj; i++) {
- if(niza[i].daliIsti(p) == false) {
- tmp[count++] = niza[i];
- }
- }
- //delete [] niza;
- niza = tmp;
- broj = count;
- } //сите објекти кои се исти како аргументот проследен во фунцијата)(10 поени)
- void pecati(bool daliNovi) {//void pecati(bool daliNovi) за печатење на информации за магацинот така што
- cout<<ime<<" "<<lokacija<<endl;
- if(daliNovi == false) { //во првиот ред ќе биде прикажано имете и локацијата на магацинот, а потоа во
- for(int i=0;i<broj;i++) {//секој нареден ред ќе бидат прикажани гитарите кои се наоѓаат во магацинот.
- cout<<niza[i].getSeriski()<<" ";
- cout<<niza[i].getTip()<<" ";
- cout<<niza[i].getNabavna()<<endl;
- }
- }//Доколку пратената променлива има вредност true ќе се печатат само гитарите кои
- else if(daliNovi == true) {//имаат година на производство понова од годината на отварање на магацинот. Во
- for(int i=0; i<broj;i++) {//спротивно се печатат сите гитари (5 поени).
- if(niza[i].getGodina() > this->godina) {
- cout<<niza[i].getSeriski()<<" ";
- cout<<niza[i].getTip()<<" ";
- cout<<niza[i].getNabavna()<<endl;
- }
- }
- }
- }
- };
- int main() {
- // se testira zadacata modularno
- int testCase;
- cin >> testCase;
- int n, godina;
- float cena;
- char seriski[50],tip[50];
- if(testCase == 1) {
- cout << "===== Testiranje na klasata Gitara ======" << endl;
- cin>>tip;
- cin>>seriski;
- cin >> godina;
- cin >> cena;
- Gitara g(tip,seriski, godina,cena);
- cout<<g.getTip()<<endl;
- cout<<g.getSeriski()<<endl;
- cout<<g.getGodina()<<endl;
- cout<<g.getNabavna()<<endl;
- } else if(testCase == 2){
- cout << "===== Testiranje na klasata Magacin so metodot print() ======" << endl;
- Magacin kb("Magacin1","Lokacija1");
- kb.pecati(false);
- }
- else if(testCase == 3) {
- cout << "===== Testiranje na klasata Magacin so metodot dodadi() ======" << endl;
- Magacin kb("Magacin1","Lokacija1",2005);
- cin>>n;
- for (int i=0;i<n;i++){
- cin>>tip;
- cin>>seriski;
- cin >> godina;
- cin >> cena;
- Gitara g(tip,seriski, godina,cena);
- cout<<"gitara dodadi"<<endl;
- kb.dodadi(g);
- }
- kb.pecati(true);
- }
- else if(testCase == 4) {
- cout << "===== Testiranje na klasata Magacin so metodot prodadi() ======" << endl;
- Magacin kb("Magacin1","Lokacija1",2012);
- cin>>n;
- Gitara brisi;
- for (int i=0;i<n;i++){
- cin>>tip;
- cin>>seriski;
- cin >> godina;
- cin >> cena;
- Gitara g(tip,seriski, godina,cena);
- if(i==2)
- brisi=g;
- cout<<"gitara dodadi"<<endl;
- kb.dodadi(g);
- }
- kb.pecati(false);
- kb.prodadi(brisi);
- kb.pecati(false);
- }
- else if(testCase == 5) {
- cout << "===== Testiranje na klasata Magacin so metodot prodadi() i pecati(true) ======" << endl;
- Magacin kb("Magacin1","Lokacija1",2011);
- cin>>n;
- Gitara brisi;
- for (int i=0;i<n;i++){
- cin>>tip;
- cin>>seriski;
- cin >> godina;
- cin >> cena;
- Gitara g(tip,seriski, godina,cena);
- if(i==2)
- brisi=g;
- cout<<"gitara dodadi"<<endl;
- kb.dodadi(g);
- }
- kb.pecati(true);
- kb.prodadi(brisi);
- cout<<"Po brisenje:"<<endl;
- Magacin kb3;
- kb3=kb;
- kb3.pecati(true);
- }
- else if(testCase ==6)
- {
- cout << "===== Testiranje na klasata Magacin so metodot vrednost()======" << endl;
- Magacin kb("Magacin1","Lokacija1",2011);
- cin>>n;
- Gitara brisi;
- for (int i=0;i<n;i++){
- cin>>tip;
- cin>>seriski;
- cin >> godina;
- cin >> cena;
- Gitara g(tip,seriski, godina,cena);
- if(i==2)
- brisi=g;
- kb.dodadi(g);
- }
- cout<<kb.vrednost()<<endl;
- kb.prodadi(brisi);
- cout<<"Po brisenje:"<<endl;
- cout<<kb.vrednost();
- Magacin kb3;
- kb3=kb;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement