Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- class silnik_samochodowy
- {
- protected:
- double moc;
- double wymiary;
- public:
- silnik_samochodowy * nast;
- double get_moc(void) { return moc; }
- double get_wymiary(void) { return wymiary; }
- virtual void wypisz(void) { printf("Moc: %.1lf\nWymiary: %.1lf\n", moc, wymiary); }
- silnik_samochodowy() { moc = 100.0; wymiary = 3.7; nast = nullptr; }
- silnik_samochodowy(double moc, double wymiary)
- {
- if (moc > 0.0) this->moc = moc;
- else this->moc = 100.0;
- if (wymiary > 0.0) this->wymiary = wymiary;
- else this->wymiary = 3.7;
- nast = nullptr;
- }
- silnik_samochodowy(const silnik_samochodowy &mk) { moc = mk.moc; wymiary = mk.wymiary; nast = mk.nast; }
- ~silnik_samochodowy() { delete nast; }
- /*LAB13*/
- silnik_samochodowy& operator+= (const silnik_samochodowy &silnik)
- {
- this->moc += silnik.moc;
- this->wymiary += silnik.wymiary;
- return *this;
- }
- silnik_samochodowy& operator= (const silnik_samochodowy &silnik)
- {
- moc = silnik.moc;
- wymiary = silnik.wymiary;
- return *this;
- }
- };
- class elektryczny: public silnik_samochodowy
- {
- protected:
- double napiecie_ladowania;
- double czas_pracy_dla_baterii;
- public:
- double get_napiecie_ladowania(void) { return napiecie_ladowania; }
- double get_czas_pracy_dla_baterii(void) { return czas_pracy_dla_baterii; }
- void set_napiecie_ladowania(double napiecie)
- {
- if (napiecie > 0.0)
- napiecie_ladowania = napiecie;
- else
- napiecie_ladowania = 5.0;
- }
- void set_czas_pracy_dla_baterii(double czas_pracy)
- {
- if (czas_pracy > 0)
- czas_pracy_dla_baterii = czas_pracy;
- else
- czas_pracy_dla_baterii = 5.0;
- }
- void wypisz(void)
- {
- printf("SILNIK ELEKTRYCZNY:\n");
- silnik_samochodowy::wypisz();
- printf("\n\nNapiecie ladowania: %.1lf\nCzas pracy baterii: %.1lf\n\n", napiecie_ladowania, czas_pracy_dla_baterii);
- }
- elektryczny() : silnik_samochodowy(), napiecie_ladowania(12.0), czas_pracy_dla_baterii(5.0) {}
- elektryczny(double mc, double wym, double nap, double czas) : silnik_samochodowy(mc, wym)
- {
- if (nap > 0.0)
- napiecie_ladowania = nap;
- else
- napiecie_ladowania = 10.0;
- if (czas > 0)
- czas_pracy_dla_baterii = czas;
- else
- czas_pracy_dla_baterii = 2.0;
- }
- elektryczny(const elektryczny &mk) :silnik_samochodowy(mk.moc, mk.wymiary), napiecie_ladowania(mk.napiecie_ladowania), czas_pracy_dla_baterii(mk.czas_pracy_dla_baterii) {}
- /*LAB13*/
- elektryczny& operator= (const elektryczny& el)
- {
- //moc = el.moc; // dziala
- silnik_samochodowy::operator=(el);
- napiecie_ladowania = el.napiecie_ladowania;
- czas_pracy_dla_baterii = el.czas_pracy_dla_baterii;
- return *this;
- }
- elektryczny& operator+= (const elektryczny& el)
- {
- silnik_samochodowy::operator+=(el);
- napiecie_ladowania += el.napiecie_ladowania;
- czas_pracy_dla_baterii += el.czas_pracy_dla_baterii;
- return *this;
- }
- };
- class spalinowy: public silnik_samochodowy
- {
- protected:
- char rodzaj_paliwa[32];
- double pojemnosc;
- char rodzaj_oleju[32];
- public:
- void get_rodzaj_paliwa(char* paliwo) { strcpy(paliwo, rodzaj_paliwa); }
- double get_pojemnosc(void) { return pojemnosc; }
- void get_rodzaj_oleju(char* olej) { strcpy(olej, rodzaj_oleju); }
- void set_rodzaj_paliwa(char* paliwo) { strcpy(rodzaj_paliwa, paliwo); }
- void set_pojemnosc(double poj)
- {
- if (poj > 0)
- pojemnosc = poj;
- else
- pojemnosc = 4.0;
- }
- void set_rodzaj_oleju(char* olej) { strcpy(rodzaj_oleju, olej); }
- void wypisz()
- {
- printf("SILNIK SPALINOWY\n");
- silnik_samochodowy::wypisz();
- printf("\n\nRodzaj paliwa: %s\nPojemnosc: %.1lf\nRodzaj oleju: %s\n\n", rodzaj_paliwa, pojemnosc, rodzaj_oleju);
- }
- spalinowy() : silnik_samochodowy(), pojemnosc(4.5)
- {
- strcpy(rodzaj_paliwa, "benzyna");
- strcpy(rodzaj_oleju, "mineralny");
- }
- spalinowy(double mc, double wym, char* paliwo, double poj, char* olej) :silnik_samochodowy(mc, wym)
- {
- if (poj > 0)
- pojemnosc = poj;
- else
- pojemnosc = 4.0;
- strcpy(rodzaj_paliwa, paliwo);
- strcpy(rodzaj_oleju, olej);
- }
- spalinowy(spalinowy &mk) : silnik_samochodowy(mk.moc, mk.wymiary), pojemnosc(mk.pojemnosc)
- {
- strcpy(rodzaj_oleju, mk.rodzaj_oleju);
- strcpy(rodzaj_paliwa, mk.rodzaj_paliwa);
- }
- /*LAB13*/
- spalinowy& operator= (const spalinowy& spal)
- {
- silnik_samochodowy::operator=(spal);
- strcpy(rodzaj_paliwa, spal.rodzaj_paliwa);
- pojemnosc = spal.pojemnosc;
- strcpy(rodzaj_oleju, spal.rodzaj_oleju);
- return *this;
- }
- spalinowy& operator+= (const spalinowy& spal)
- {
- silnik_samochodowy::operator+=(spal);
- strcat(rodzaj_paliwa, spal.rodzaj_paliwa);
- pojemnosc += spal.pojemnosc;
- strcat(rodzaj_oleju, spal.rodzaj_oleju);
- return *this;
- }
- };
- class samochod
- {
- protected:
- double cena;
- char rodzaj[20];
- public:
- samochod * nast;
- double get_cena(void) { return cena; }
- char* get_silnik(void) { return rodzaj; }
- void wypisz(void) { printf("Cena: %.1lf\nSilnik: %s\n", cena, rodzaj); }
- samochod()
- {
- cena = 10000.0;
- strcpy(rodzaj, "spalinowy");
- nast = nullptr;
- }
- samochod(double cena, char* y)
- {
- strcpy(rodzaj, y);
- if (cena > 0.0) this->cena = cena;
- else this->cena = 10000.0;
- nast = nullptr;
- }
- samochod(const samochod &mk)
- {
- cena = mk.cena;
- strcpy(rodzaj, mk.rodzaj);
- nast = mk.nast;
- }
- ~samochod() { delete nast; printf("DESTRUKTOR SAMOCHOD\n");}
- };
- class urzadzenie_optyczne
- {
- protected:
- double zoom;
- double waga;
- public:
- urzadzenie_optyczne * nast;
- double get_zoom(void) { return zoom; }
- double get_waga(void) { return waga; }
- void wypisz(void) { printf("Zoom: %.1lf\nWaga: %.1lf\n", zoom, waga); }
- urzadzenie_optyczne() { zoom = 3.0; waga = 500.0; nast = nullptr; }
- urzadzenie_optyczne(double zoom, double waga)
- {
- if (zoom >= 0.0)this->zoom = zoom;
- else this->zoom = 3.0;
- if (waga >= 0.0)this->waga = waga;
- else this->waga = 500.0;
- nast = nullptr;
- }
- urzadzenie_optyczne(const urzadzenie_optyczne &mk) { zoom = mk.zoom; waga = mk.waga; nast = mk.nast; }
- ~urzadzenie_optyczne() { delete nast; printf("DESTRUKTOR URZADZNIE OPTYCZNE\n");}
- };
- class osoba_na_uczelni
- {
- protected:
- char imie[32];
- char nazwisko[32];
- char adres_email[32];
- public:
- osoba_na_uczelni * nast;
- void get_imie(char *imie_destination) { strcpy(imie_destination, imie); }
- void get_nazwisko(char *nazwisko_destination) { strcpy(nazwisko_destination, nazwisko); }
- void get_email(char *adres_email_destination) { strcpy(adres_email_destination, adres_email); }
- void wypisz(void) { printf("Imie: %s\nNazwisko: %s\nAdres email: %s\n", imie, nazwisko, adres_email); }
- osoba_na_uczelni()
- {
- strcpy(imie, "brak");
- strcpy(nazwisko, "brak");
- strcpy(adres_email, "brak");
- nast = nullptr;
- }
- osoba_na_uczelni(char *wsk_imie, char *wsk_nazwisko, char *wsk_adres_email)
- {
- strcpy(imie, wsk_imie);
- strcpy(nazwisko, wsk_nazwisko);
- strcpy(adres_email, wsk_adres_email);
- nast = nullptr;
- }
- osoba_na_uczelni(const osoba_na_uczelni &mk)
- {
- strcpy(imie, mk.imie);
- strcpy(nazwisko, mk.nazwisko);
- strcpy(adres_email, mk.adres_email);
- nast = nullptr;
- }
- ~osoba_na_uczelni() { delete nast; printf("DESTRUKTOR OSOBA NA UCZELNI\n");}
- };
- int main()
- {
- /*WEJSCIOWKA 12*/
- //silnik_samochodowy *silnik_1 = new silnik_samochodowy();
- //silnik_samochodowy *silnik_2 = new silnik_samochodowy(300.0, 4.5);
- //silnik_samochodowy *silnik_3 = new silnik_samochodowy(*silnik_2);
- //silnik_samochodowy *silnik_4 = new silnik_samochodowy();
- //silnik_samochodowy *silnik_5 = new silnik_samochodowy(250.0, 3.5);
- //silnik_samochodowy *silnik_head = silnik_1;
- //silnik_1->nast = silnik_2;
- //silnik_2->nast = silnik_3;
- //silnik_3->nast = silnik_4;
- //silnik_4->nast = silnik_5;
- //silnik_samochodowy *wsk = silnik_head;
- //printf("LISTA SILNIKOW:\n");
- //int i = 0;
- //while (wsk != nullptr)
- //{
- // printf("\nSilnik: %d\n", i + 1);
- // wsk->wypisz();
- // wsk = wsk->nast;
- // i++;
- //}
- //delete silnik_head;
- //char rodzaj1[20] = { "Gaz" };
- //char rodzaj2[20] = { "Hybrydowy" };
- //samochod *samochod_1 = new samochod();
- //samochod *samochod_2 = new samochod(5000.0, rodzaj1);
- //samochod *samochod_3 = new samochod(*samochod_2);
- //samochod *samochod_4 = new samochod();
- //samochod *samochod_5 = new samochod(30000.0, rodzaj2);
- //samochod *samochod_head = samochod_1;
- //samochod_1->nast = samochod_2;
- //samochod_2->nast = samochod_3;
- //samochod_3->nast = samochod_4;
- //samochod_4->nast = samochod_5;
- //samochod *wsk_1 = samochod_head;
- //printf("\n\nLISTA SAMOCHODOW:\n");
- //i = 0;
- //while (wsk_1 != nullptr)
- //{
- // printf("\nSamochod: %d\n", i + 1);
- // wsk_1->wypisz();
- // wsk_1 = wsk_1->nast;
- // i++;
- //}
- //delete samochod_head;
- //urzadzenie_optyczne *urzadzenie_1 = new urzadzenie_optyczne();
- //urzadzenie_optyczne *urzadzenie_2 = new urzadzenie_optyczne(2.0, 200.0);
- //urzadzenie_optyczne *urzadzenie_3 = new urzadzenie_optyczne(*urzadzenie_2);
- //urzadzenie_optyczne *urzadzenie_4 = new urzadzenie_optyczne();
- //urzadzenie_optyczne *urzadzenie_5 = new urzadzenie_optyczne(1.5, 150.0);
- //urzadzenie_optyczne *urzadzenie_head = urzadzenie_1;
- //urzadzenie_1->nast = urzadzenie_2;
- //urzadzenie_2->nast = urzadzenie_3;
- //urzadzenie_3->nast = urzadzenie_4;
- //urzadzenie_4->nast = urzadzenie_5;
- //urzadzenie_optyczne *wsk_2 = urzadzenie_head;
- //printf("\n\nLISTA URZADZEN OPTYCZNYCH:\n");
- //i = 0;
- //while (wsk_2 != nullptr)
- //{
- // printf("\nUrzadzenie: %d\n", i + 1);
- // wsk_2->wypisz();
- // wsk_2 = wsk_2->nast;
- // i++;
- //}
- //delete urzadzenie_head;
- //char imie1[32] = { "Mirek" };
- //char nazwisko1[32] = { "Abramowicz" };
- //char email1[32] = { "m.abramowicz@wp.pl" };
- //char imie2[32] = { "Krzysztof" };
- //char nazwisko2[32] = { "Michalek" };
- //char email2[32] = { "k.michalek@wp.pl" };
- //osoba_na_uczelni *osoba_1 = new osoba_na_uczelni();
- //osoba_na_uczelni *osoba_2 = new osoba_na_uczelni(imie1, nazwisko1, email1);
- //osoba_na_uczelni *osoba_3 = new osoba_na_uczelni(*osoba_2);
- //osoba_na_uczelni *osoba_4 = new osoba_na_uczelni();
- //osoba_na_uczelni *osoba_5 = new osoba_na_uczelni(imie2, nazwisko2, email2);
- //osoba_na_uczelni *osoba_head = osoba_1;
- //osoba_1->nast = osoba_2;
- //osoba_2->nast = osoba_3;
- //osoba_3->nast = osoba_4;
- //osoba_4->nast = osoba_5;
- //osoba_na_uczelni *wsk_3 = osoba_head;
- //printf("\n\nLISTA OSOB NA UCZELNI:\n");
- //i = 0;
- //while (wsk_3 != nullptr)
- //{
- // printf("\nOsoba: %d\n", i + 1);
- // wsk_3->wypisz();
- // wsk_3 = wsk_3->nast;
- // i++;
- //}
- //delete osoba_head;
- /*LAB12*/
- //silnik_samochodowy *head = nullptr, *wsk = nullptr;
- //char wybor;
- //do
- //{
- // printf("WYBIERZ TYP SILNIKA:\n1 - elektryczny\n2 - spalinowy\n\n");
- // int typ_silnika;
- // scanf("%d", &typ_silnika);
- // switch (typ_silnika)
- // {
- // double moc;
- // double wymiary;
- // double napiecie;
- // double czas_pracy;
- // char paliwo[32];
- // double pojemnosc;
- // char olej[32];
- // case 1:
- // printf("\nPodaj moc silnika: ");
- // scanf("%lf", &moc);
- // printf("Podaj wymiary: ");
- // scanf("%lf", &wymiary);
- // printf("Podaj napiecie: ");
- // scanf("%lf", &napiecie);
- // printf("Podaj czas pracy na baterii: ");
- // scanf("%lf", &czas_pracy);
- // if (head == nullptr)
- // head = wsk = new elektryczny(moc, wymiary, napiecie, czas_pracy);
- // else
- // {
- // wsk->nast = new elektryczny(moc, wymiary, napiecie, czas_pracy);
- // wsk = wsk->nast;
- // }
- // break;
- // case 2:
- // printf("\nPodaj moc silnika: ");
- // scanf("%lf", &moc);
- // printf("Podaj wymiary: ");
- // scanf("%lf", &wymiary);
- // printf("Podaj rodzaj paliwa: ");
- // scanf("%s", paliwo);
- // printf("Podaj pojemnosc: ");
- // scanf("%lf", &pojemnosc);
- // printf("Podaj rodzaj oleju: ");
- // scanf("%s", olej);
- // if (head == nullptr)
- // head = wsk = new spalinowy(moc, wymiary, paliwo, pojemnosc, olej);
- // else
- // {
- // wsk->nast = new spalinowy(moc, wymiary, paliwo, pojemnosc, olej);
- // wsk = wsk->nast;
- // }
- // break;
- // default:
- // printf("\n\nBledny wybor\n\n");
- // break;
- // }
- // printf("\n\nKONTYNUOWAC ? t/n ");
- // while (getchar() != '\n') continue;
- // wybor = getchar();
- // while (getchar() != '\n') continue;
- //} while (wybor == 't');
- //printf("\nLISTA SILNIKOW:\n\n");
- //wsk = head;
- //while (wsk != nullptr)
- //{
- // wsk->wypisz();
- // wsk = wsk->nast;
- //}
- //delete head;
- /*LAB13*/
- /*1*/
- elektryczny A1, A2, A3;
- spalinowy B1, B2, B3;
- A2 += A3;
- A1 = A2;
- B1 = B2 += B3;
- printf("A1:\n");
- A1.wypisz();
- printf("\n\nB1:\n");
- B1.wypisz();
- /*2*/
- silnik_samochodowy *head = nullptr, *wsk = nullptr;
- char wybor;
- do
- {
- printf("WYBIERZ TYP SILNIKA:\n1 - elektryczny\n2 - spalinowy\n\n");
- int typ_silnika;
- scanf("%d", &typ_silnika);
- switch (typ_silnika)
- {
- double moc;
- double wymiary;
- double napiecie;
- double czas_pracy;
- char paliwo[32];
- double pojemnosc;
- char olej[32];
- case 1:
- printf("\nPodaj moc silnika: ");
- scanf("%lf", &moc);
- printf("Podaj wymiary: ");
- scanf("%lf", &wymiary);
- printf("Podaj napiecie: ");
- scanf("%lf", &napiecie);
- printf("Podaj czas pracy na baterii: ");
- scanf("%lf", &czas_pracy);
- if (head == nullptr)
- head = wsk = new elektryczny(moc, wymiary, napiecie, czas_pracy);
- else
- {
- wsk->nast = new elektryczny(moc, wymiary, napiecie, czas_pracy);
- wsk = wsk->nast;
- }
- break;
- case 2:
- printf("\nPodaj moc silnika: ");
- scanf("%lf", &moc);
- printf("Podaj wymiary: ");
- scanf("%lf", &wymiary);
- printf("Podaj rodzaj paliwa: ");
- scanf("%s", paliwo);
- printf("Podaj pojemnosc: ");
- scanf("%lf", &pojemnosc);
- printf("Podaj rodzaj oleju: ");
- scanf("%s", olej);
- if (head == nullptr)
- head = wsk = new spalinowy(moc, wymiary, paliwo, pojemnosc, olej);
- else
- {
- wsk->nast = new spalinowy(moc, wymiary, paliwo, pojemnosc, olej);
- wsk = wsk->nast;
- }
- break;
- default:
- printf("\n\nBledny wybor\n\n");
- break;
- }
- printf("\n\nKONTYNUOWAC ? t/n ");
- while (getchar() != '\n') continue;
- wybor = getchar();
- while (getchar() != '\n') continue;
- } while (wybor == 't');
- printf("\nLISTA SILNIKOW:\n\n");
- wsk = head;
- while (wsk != nullptr)
- {
- wsk->wypisz();
- wsk = wsk->nast;
- }
- elektryczny* suma = (elektryczny*) head;
- wsk = head;
- while(wsk != nullptr)
- {
- *suma += *(elektryczny*)wsk;
- wsk = wsk->nast;
- }
- printf("\n\nSUMA\n");
- suma->wypisz();
- delete head;
- printf("\n\nKoniec programu.\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement