Mam problem z zadaniami z obiektówki. W pierwszym zadaniu chodzi o to, aby utworzyć trzy obiekty cow, sheep i horse, tak aby program mógł zliczyć ich dzienne zapotrzebowanie wody. Urzytkownik wprowawdza dane obiektów do zmiennej input za pomoca funkcji getline() ,z której program następnie wczytuje dane za pomocą instrukcji warunkowej. Problem polega na tym, że nie umiem do końca rozrzyfrować w jaki sposób program to zlicza, przez co w konsoli po wpisaniu danych wyskakuje mi zero. Getline() w pętli też mi chyba nie działa...
Plik z zadaniem
kod:
#include <iostream>
#include<cstdio>
#include <string>
using namespace std;
class FarmAnimal{
public:
FarmAnimal(double water_consumption);
double getWaterConsumption();
double weight;
double liters;
double type;
private:
double water_consumption;
};
FarmAnimal::FarmAnimal(double water_consumption) {
this->water_consumption = water_consumption;
}
double FarmAnimal::getWaterConsumption() {
return water_consumption;
}
class ConsumptionAccumulator
{
public:
ConsumptionAccumulator();
double getTotalConsumption();
void addConsumption(FarmAnimal animal);
private:
double total_consumption;
};
ConsumptionAccumulator::ConsumptionAccumulator() :
total_consumption(0)
{
}
double ConsumptionAccumulator::getTotalConsumption()
{
return total_consumption;
}
void ConsumptionAccumulator::addConsumption(FarmAnimal animal)
{
total_consumption += animal.getWaterConsumption();
}
class cow : public FarmAnimal{
public:
cow(double weight) : FarmAnimal(weight*0.086){}
};
class sheep : public FarmAnimal {
public:
sheep(double weight) : FarmAnimal(weight*0.11){}
};
class horse : public FarmAnimal {
public:
horse(double weight) : FarmAnimal(weight*0.068){}
};
int main()
{
string input = " ";
ConsumptionAccumulator accumulator;
double weight;
do
{
for (int i = 0; i < 2; i++) {
getline(cin, input);
}
if (1 == scanf_s(input.c_str(), "cow %lf", &weight)) {
accumulator.addConsumption(cow(weight));
}
else if (1 == scanf_s(input.c_str(), "sheep %lf", &weight)) {
accumulator.addConsumption(sheep(weight));
}
else if (1 == scanf_s(input.c_str(), "horse %lf", &weight)) {
accumulator.addConsumption(horse(weight));
}
input = " ";
} while (input != " ");
cout << accumulator.getTotalConsumption();
system("pause");
return 0;
}
Mam jeszcze drugie zadanie odnośnie linked listy, którego całkiem nie rozumiem. Jeśli ktoś chciałby się podjąć tego to byłbym wdzięczny za rowziązanie, albo chociaż za wytłumaczenie.
Plik zad2