Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Auto-luokan koodaus

Manalainen [10.05.2024 19:29:23]

#

Eli yritän tehdä alla olevaa Auto-luokkaa, mutta en saa tuota kaynnissa() muuttujan arvoa muutetuksi. Onko tuo edes sinne päin, tulostus, auto on käynnissä vaikka pitäisi muuttua auto ei ole käynnissä eli(false).

Luokan metodit
// - kaynnista(), muuttaa kaynnissa-muuttujan arvoksi 1
// - sammuta(), muuttaa kaynnissa-muuttujan arvoksi 0
// - katsasta(), tulostaa auton tiedot esimerkkitulosteen mukaisesti

bool Auto::kaynnissa()
{
}

bool Auto::kaynnista()
{
  return kaynnissa()==true;
}

bool Auto::sammuta()
{
  return kaynnissa()==false;
}

void Auto::katsasta()
{
    TulostaAutonTiedot();
    if (kaynnissa()==true) {
      cout << "Auto on käynnissä.";
} else {
        cout << "Auto ei ole käynnissä.";
}

jlaire [10.05.2024 20:54:21]

#

Luokan määrittely puuttuu koodistasi, siis class Auto { ... }. Joka tapauksessa muuttujan arvo asetetaan ykköseksi näin:

void Auto::kaynnista()
{
  kaynnissa = 1;
}

Manalainen [10.05.2024 21:49:52]

#

Koko koodi on tässä:

class Auto : private Ajoneuvo
{
  public:

    string merkki, malli, rekkari;
    bool kaynnissa();

    Auto(int paino, int huippu_nopeus, long ajetut_kilometrit,
    string auton_merkki, string auton_malli, string auton_rekkari, bool kaynnissa);

    int AnnaHuippunopeus();
    long AnnaAjetutKilometrit();
    int AnnaPaino();
    void Aja(int ajettava_matka);
    void AsetaMerkki(string uusi_merkki);
    void AsetaMalli(string uusi_malli);
    void AsetaRekisteri(string uusi_rekisteri_nro);
    void TulostaAutonTiedot();
    bool sammuta();
    bool kaynnista();
    void katsasta();
};

Auto::Auto(int paino, int huippu_nopeus, long ajetut_kilometrit, string auton_merkki, string auton_malli, string auton_rekkari, bool kaynnissa):
Ajoneuvo(paino, huippu_nopeus, ajetut_kilometrit)

    {
        merkki = auton_merkki;
        malli = auton_malli;
        rekkari = auton_rekkari;
    }


void Auto::AsetaMerkki(string uusi_merkki)
  {
    merkki = uusi_merkki;
  }

void Auto::AsetaMalli(string uusi_malli)
  {
    malli = uusi_malli;
  }

void  Auto::AsetaRekisteri(string uusi_rekisteri_nro)
    {
      rekkari = uusi_rekisteri_nro;
    }

int Auto::AnnaPaino()
{
    return paino;
}

long Auto::AnnaAjetutKilometrit()
  {
      return ajetut_kilometrit;
  }

void Auto::Aja(int ajettava_matka)
{
   ajetut_kilometrit += ajettava_matka;
}

int Auto::AnnaHuippunopeus()
{
  return huippu_nopeus;
}

bool Auto::kaynnissa()
{
  return 0;
}

bool Auto::kaynnista()
{
  return kaynnissa()==true;
}

bool Auto::sammuta()
{
  return kaynnissa()==false;
}

void Auto::katsasta()
{
    TulostaAutonTiedot();
    if (kaynnissa()==true) {
      cout << "Auto on käynnissä.";
} else {
        cout << "Auto ei ole käynnissä.";
}
    cout << endl;
}

void Auto::TulostaAutonTiedot()
{
cout << "Auton tiedot:" << endl;
cout << "Merkki: " << merkki << endl;
cout << "Malli: " << malli << endl;
cout << "Ajokilometrit: " << ajetut_kilometrit << endl;
cout << "Paino: " << paino << endl;
cout << "Huippunopeus: " << huippu_nopeus << endl;
cout << "Rekisterinumero: "<< rekkari << endl;

}

jlaire [10.05.2024 22:39:37]

#

Jos kaynnissa() on funktio, siihen ei voi asettaa arvoa. Luulen et sen pitäisi olla muuttuja eli bool kaynnissa; ilman sulkuja.

Onko tehtävänanto jossain netissä ja voitko linkata siihen?

Manalainen [10.05.2024 22:55:34]

#

Jees sain toimimaan, kiitoksia!

jlaire [10.05.2024 22:59:31]

#

Hyvä!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta