To pewnie glupie pytanie, ale mecze sie z tym od paru godzin, wiec pomyslalem ze warto sprobowac. Stworzylem klase, ktora ma zapisywac obiekty z jednej klasy do tablicy drugiej klasy zgodnie z zasadami kopca binarnego. Problem w tym, ze gdy obiekt trafia do funkcji w ktorej ma zostac zapisany do tablicy to nagle nie posiada on zadnych wczesniej wpisanych wartosci. Myslalem, ze jest to pewnie jakos zwiazane ze sposobem przekazywania obiektu do funkcji, ale swoja przygode z c++ dopiero zaczynam i nie do konca to rozumiem. Z gory dzieki za pomoc.
#include<iostream>
#include<string>
using namespace std;
class Car
{
string nr_;
int power_;
double weight_;
char engine_;
public:
Car();
Car(int);
~Car(){}
string readNr();
int readPower();
double readWeight();
char readChar();
void writeNr(string);
void writePower(int);
void writeWeight(double);
void writeChar(char);
};
class CarHeap
{
static const int capacity_=6;
int counter_;
Car arr_[capacity_];
public:
CarHeap();
friend class Car;
void adCar (Car);
void showCar();
void carEquals(Car,Car);
};
void CarHeap::carEquals(Car first,Car second)
{
first.writeNr(second.readNr());
first.writePower(second.readPower());
first.writeWeight(second.readWeight());
first.writeChar(second.readChar());
}
void CarHeap::showCar()
{
cout << "result" << endl;
for (int i=0;i<counter_;i++)
{
cout << arr_[i].readNr() << " " << arr_[i].readPower() << " ";
}
}
void CarHeap::adCar (Car obj)
{
if (counter_<capacity_)
{
int child=counter_++;
int parent=(child-1)/2;
cout << obj.readPower() << endl;
while (child>0&&arr_[parent].readPower()>obj.readPower())
{
carEquals(arr_[child],arr_[parent]);
child=parent;
parent=(child-1)/2;
}
carEquals(arr_[child],obj);
}
}
CarHeap::CarHeap() {
counter_=0;
}
int Car::readPower()
{
return power_;
}
string Car::readNr()
{
return nr_;
}
double Car::readWeight()
{
return weight_;
}
char Car::readChar()
{
return engine_;
}
void Car::writeNr(string x)
{
nr_=x;
}
void Car::writePower(int x)
{
power_=x;
}
void Car::writeWeight(double x)
{
weight_=x;
}
void Car::writeChar(char x)
{
engine_=x;
}
Car::Car () {
string nr;
int power;
double weight;
char engine;
cin >> nr;
nr_=nr;
cin >> power;
power_=power;
cin >> weight;
weight_=weight;
cin >> engine;
engine_=engine;
}
int main()
{
CarHeap arr;
Car a;
arr.adCar(a);
Car b;
arr.adCar(b);
Car c;
arr.adCar(c);
Car d;
arr.adCar(d);
Car e;
arr.adCar(e);
Car f;
arr.adCar(f);
arr.showCar();
return 0;
}