Dlaczgo klasa nie chce działać

0

dlaczego program pomija wpisywanie danych

#include <iostream>
using namespace std;

class samochod {
public:
    int stan, paliwo, spalanie, pojemnosc_baku, przebieg;
    int uruchom_silnik();
    void zatrzymaj_silnik();
    int jedz(unsigned);
    void tankuj(unsigned);
    void prezentuj();
    samochod(int stan, int paliwo, int spalanie, int pojemnosc_baku, int przebieg){ ////#######tutaj
    cout << "Start:";
    stan = stan;
    paliwo = paliwo;
    spalanie = spalanie;
    pojemnosc_baku = pojemnosc_baku;
    przebieg =przebieg;
    prezentuj();
    }
    ~samochod(){cout<<"koniec";}
};

int samochod::uruchom_silnik()
{
    if (stan == 0) {
        if (paliwo == 0) {
            cout << "za malo paliwa\n";
            return 0;
        }
        stan = 1;
        cout << "uruchomilem\n";
    }

    else
        cout << "silnik juz wlaczony\n";
        return 0;
}
void samochod::zatrzymaj_silnik()
{
    if (stan == 1) {
        stan = 0;
        cout << "wylaczylem\n";
    }
    else
        cout << "silnik juz wylaczony\n";
}
int samochod::jedz(unsigned km)

{
    string wybor;
    if (stan == 0) {
        cout << "silnik nie wlaczony\n";
        return 0;
    }
    unsigned max_km = paliwo / spalanie;
    if (km > max_km) {
        cout << "mozesz pojechac tylko " << max_km << " zrobic?:";
        cin >> wybor;
        if (wybor != "nie"){
        przebieg += max_km;
        paliwo -= (max_km * spalanie);
        return 0;
         }
    }
        przebieg += km;
        paliwo -= (km * spalanie);
    return 0;
}

void samochod::tankuj(unsigned x)
{
    if (x + paliwo <= pojemnosc_baku)
        paliwo += x;
    else
        cout << "za duza ilosc paliwa\n";
}
void samochod::prezentuj()
{
    cout << "stan:" << stan << endl;
    cout << "paliwo:" << paliwo << endl;
    cout << "spalanie:" << spalanie << endl;
    cout << "pojemnosc_baku:" << pojemnosc_baku << endl;
    cout << "przebieg:" << przebieg << endl;
}

int main(int argc, char** argv)
{

    string wybor;

    samochod car(0,100,200,10,2300);
    /*car.stan = 0;
    car.paliwo = 100;
    car.pojemnosc_baku = 200;
    car.spalanie = 10;
    car.przebieg = 2300;
*/
    int liczba;
    unsigned km, litry;
    do {

        cout << "\nCo chcesz zrobic:\n";
        cout << "1.Uruchom silnik\n";
        cout << "2.Zatrzymaj silnik\n";
        cout << "3.Jedz\n";
        cout << "4.Tankuj\n";
        cout << "5.Prezentuj";
        cout << ":";
        cin >> liczba;

        switch (liczba) {

        case 1:
            car.uruchom_silnik();
            break;
        case 2:
            car.zatrzymaj_silnik();
            break;
        case 3:
            cout << "ile km?:";
            cin >> km;
            car.jedz(km);
            break;
        case 4:
            cout << "ile litrow?:";
            cin >> litry;
            car.tankuj(litry);
            break;
        case 5:
            car.prezentuj();
            break;
        }
        cout << "Kontynuujesz?:";

        cin >> wybor;
    } while (wybor != "nie");

    return 0;
}

0

Nigdzie ci nie pisze, że nie ma takiej klasy. Jak nie wiesz co błąd oznacza, to nie próbuj go interpretować, tylko cytuj słowo w słowo. https://dsp.krzaq.cc/post/445/jak-zadawac-pytania-na-forum/

samochod(0);

a po co to?

samochod car;  //TUTUUU

Wywołujesz domyślny konstruktor, zdefiniowany... no właśnie. Nigdzie.

0
class samochod {
public:
    int stan, paliwo, spalanie, pojemnosc_baku, przebieg;
    int uruchom_silnik();
    void zatrzymaj_silnik();
    int jedz(unsigned);
    void tankuj(unsigned);
    void prezentuj();
    samochod(int stan_, int paliwo_, int spalanie_, int pojemnosc_baku_,
             int przebieg_){
    cout << "Start:";
    stan = stan_;
    paliwo = paliwo_;
    spalanie = spalanie_;
    pojemnosc_baku = pojemnosc_baku_;
    przebieg =przebieg_;
    prezentuj();
    }
    ~samochod(){cout<<"koniec";}
};

teraz jest dobrze, ale nie wiem dlaczego, zmieniłem nazwy zmiennych w nagłowku funkcji aby były inne niz w klasie?

1

W zedytowanej wersji przypisywałeś argumenty konstruktora do samych siebie. this->stan = stan lub, lepiej, w liście inicjalizacyjnej konstruktora stan{stan} jeśli chcesz używać przesłaniających się nazw zmiennych.

0

a powiesz dlaczego funkcja jedz() nie działa prawidłowo, wszystko było ok, ale po dodaniu tego konstruktora, max_km = 0 chociaż jest to:
unsigned max_km = paliwo / spalanie; więc nie wiem dlaczego paliwo jest na 0?
samochod car(0,100,200,1000,2300); wywoałnie

0

Dzielisz liczby całkowite, 6/9 to 0, a nie 0.666....

0

aha dobra wiem gdzie jest bład, dałem przecież spalanie większe niż ilośc paliwa,

1 użytkowników online, w tym zalogowanych: 0, gości: 1