Klasy i psikus zmiennej Double

0

witajcie mam taki kod problem polega na tym że zmienna cena robi mi psikusa i nie pozwala zrealizować mi mojego marzenia aby ten programik działał próbowałem znaleźć rozwiązanie próbowałem na milon sposobów budować konstruktor ale nie mogę tego rozwiązać i więc proszę was o to :)

#include <iostream>

using namespace std;

class info{
    string marka;
    string model;
    double cena;
public:
    info(string marka="",string model="",double cena):
        marka(marka),model(model),cena(cena){}
    void pokaz(){cout << marka << " " << model << " " << cena << endl;}
    double dajcene(){return cena;}
};

class spis{
    static int nr;
    info tab[100];
public:
    void dodaj(info);
    double suma();
    void pokaz2();
};
int spis::nr;

void spis::dodaj(info p){
    tab[nr++]=p;
}

double spis::suma(){
    double suma=0;
    for(int i =0; i <nr;i++){
        suma+=tab[i].dajcene();
    }
    return suma;
}

void spis::pokaz2(){
    for(int i =0;i<nr;i++){
        tab[i].pokaz();
    }
    cout << "laczna wartosc samochodów: "<<suma()<<endl;
}

int main(){
    spis l1;
    l1.dodaj(info("bmw","e36",100000.35));
    l1.dodaj(info("bmw","e36",100000.35));
    l1.dodaj(info("bmw","e36",100000.35));
    l1.pokaz2();
    return 0;
}
1

Nie wiem na czym polega błąd, ale cenę lepiej mieć w liczbach stałoprzecinkowych... Ten artykuł powinien Tobie pomóc.

2

info(string marka="",string model="",double cena) to się w ogóle kompiluje? Domyślne wartości dla parametrów funkcji można nadawać wyłącznie jeśli wszystkie dalsze parametry mają domyślne wartości.

static int nr; a co jeśli będziesz chciał mieć dwa spisy? Wartości globalne to prawie nigdy nie jest dobra odpowiedź. Lepiej użyj std::vector jako dynamicznej tablicy.

0

udało mi się naprawić problem wystarczyło do zmienić "info(string marka="",string model="",double cena):" na "info(string marka="",string model="",double cena='k'):"

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