Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- #include <iostream>
- #include <string.h>
- using std::cout;
- using std::endl;
- enum TypyUrzadzen
- {
- DyskTwardy, PlytaGlowna, Zasilacz
- };
- class Urzadzenie
- {
- char nazwa[50];
- protected:
- Urzadzenie(char * _nazwa)
- {
- strcpy(nazwa, _nazwa);
- }
- public:
- char * GetName()
- {
- return nazwa;
- }
- virtual int Moc() = 0;
- virtual float Cena() = 0;
- virtual void Informacja()
- {
- cout << " Nazwa: " << nazwa << endl;
- cout << " Moc :" << Moc() << endl;
- cout <<"Cena :" << Cena() << endl;
- cout << endl;
- }
- };
- class CZasilacz : public Urzadzenie
- {
- int moc;
- int wentylatory_i_;
- public:
- CZasilacz(char* _nazwa, int moc, int wentylatory_i)
- : Urzadzenie(_nazwa),
- moc(moc),
- wentylatory_i_(wentylatory_i)
- {
- }
- virtual int Moc() override
- {
- return moc;
- }
- virtual float Cena() override
- {
- float cena;
- cena = moc * 0, 9;
- return cena + (wentylatory_i_ * 25);
- }
- // virtual void Informacja() override
- // {
- // cout << " Nazwa: " << GetName() << endl;
- // cout << " Moc :" << Moc() << endl;
- // cout << "Cena :" << Cena() << endl;
- // cout << endl;
- // }
- };
- class CPlytaGlowna : public Urzadzenie
- {
- int liczba_procesorow_i_;
- int liczba_zlacz_sata_i_;
- int liczba_zlacz_pci_i_;
- public:
- CPlytaGlowna(char* _nazwa, int liczba_procesorow_i, int liczba_zlacz_sata_i, int liczba_zlacz_pci_i)
- : Urzadzenie(_nazwa),
- liczba_procesorow_i_(liczba_procesorow_i),
- liczba_zlacz_sata_i_(liczba_zlacz_sata_i),
- liczba_zlacz_pci_i_(liczba_zlacz_pci_i)
- {
- }
- int Moc() override
- {
- return (liczba_procesorow_i_ * 100) + (20 * liczba_zlacz_pci_i_) + (liczba_zlacz_sata_i_ * 20);
- }
- float Cena() override
- {
- return 300 + (liczba_procesorow_i_ * 400) + (liczba_zlacz_pci_i_ * 50) + (liczba_zlacz_sata_i_ * 20);
- }
- // void Informacja() override
- // {
- // cout << " Nazwa: " << GetName() << endl;
- // cout << " Moc :" << Moc() << endl;
- // cout << "Cena :" << Cena() << endl;
- // cout << endl;
- // }
- };
- class CDyskTwardy : public Urzadzenie
- {
- int pojemnosc_dysku_i_;
- public:
- CDyskTwardy(char* _nazwa, int pojemnosc_dysku_i)
- : Urzadzenie(_nazwa),
- pojemnosc_dysku_i_(pojemnosc_dysku_i)
- {
- }
- virtual int Moc() override
- {
- int moc_dysku_twardego_i = 70;
- return moc_dysku_twardego_i;
- }
- virtual float Cena() override
- {
- float cena_jednego_gb_x =1 ;
- if (pojemnosc_dysku_i_ < 200) return 200;
- return cena_jednego_gb_x* pojemnosc_dysku_i_;
- }
- // virtual void Informacja() override
- // {
- // cout << " Nazwa: " << GetName() << endl;
- // cout << " Moc :" << Moc() << endl;
- // cout << "Cena :" << Cena() << endl;
- // cout << endl;
- // }
- };
- int TypWpisu(char * informacjaotypie)
- {
- if (strcmp(informacjaotypie, "DyskTwardy") == 0) return DyskTwardy;
- if (strcmp(informacjaotypie, "PlytaGlowna") == 0) return PlytaGlowna;
- if (strcmp(informacjaotypie, "Zasilacz") == 0) return Zasilacz;
- }
- int main()
- {
- FILE * plik;
- plik = fopen("urzadzenia.txt", "a+");
- Urzadzenie *tab[100];
- int i = 0;
- while (!feof(plik))
- {
- char informacja_otypie_wpisu_c[20];
- char buffor_nazwy_produktu_c[50];
- int parametr1 = 0;
- int parametr2 = 0;
- int parametr3 = 0;
- if (!plik)
- return 0;
- //fscanf(plik, "%s %s %d %d %d", &informacja_otypie_wpisu_c, &buffor_nazwy_produktu_c, ¶metr1, ¶metr2_i, ¶metr3_i);
- fscanf(plik, "%s %s %d %d %d", &informacja_otypie_wpisu_c,&buffor_nazwy_produktu_c ,¶metr1,¶metr2 , ¶metr3);
- int typwpisu_i = TypWpisu(informacja_otypie_wpisu_c);
- switch (typwpisu_i)
- {
- case 0:
- {
- tab[i] = new CDyskTwardy(buffor_nazwy_produktu_c, parametr1);
- break;
- }
- case 1:
- {
- tab[i] = new CPlytaGlowna(buffor_nazwy_produktu_c, parametr1, parametr2, parametr3);
- break;
- }
- case 2:
- {
- tab[i] = new CZasilacz(buffor_nazwy_produktu_c, parametr1, parametr2);
- break;
- }
- }
- i++;
- }
- fclose(plik);
- for (int j = 0; j < i; j++)
- {
- tab[j]->Informacja();
- }
- _getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement