(Mój błąd że nie zrobiłem osobnego tematu )
Wiecie dlaczego nie wyswietla mi sie na ekranie obiekt klasy **analiza a4 **? Dodam ze pozostałe obiekty klasy analiza normalnie są wyrzucane na ekran za pomocą operatora wyjścia, natomiast ten nie rusza.
Dokładnie to ta linijka w main:
analiza a4;
cout << a4 << a4.srednia() << a4.variancja() <<a4.odchylenie()<< endl;
Kod:
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
class pomiar{
protected:
string opis;
unsigned roz;
double* tab;
public:
pomiar():opis("Brak elementow"),roz(0),tab(0){}
pomiar(const string& a1,const unsigned a2)
:opis(a1),roz(a2),tab(roz? new double(roz):0){
for(int i = 0 ; i < roz ;i++){
tab[i]=0;
}
}
pomiar(const string& a1,const double*pocz,const double*kon)
:opis(a1),roz(kon-pocz),tab(roz? new double[roz]:0){
for(int i = 0 ; i < roz ; ++i){
tab[i]=pocz[i];
}
}
pomiar(const pomiar& ob):opis(ob.opis),roz(ob.roz),tab(ob.roz? new double[ob.roz]:0){
for(int i = 0 ; i < ob.roz ; i++){
tab[i]=ob.tab[i];
}
}
friend ostream& operator << (ostream& out,const pomiar& ob);
double& operator[](const unsigned i)throw (string){
if(i > roz) throw string ("ze wyszlismy po za rozmiar tablicy");
return tab[i];
}
const double& operator[](const unsigned i)const throw (string){
if(i > roz) throw string ("ze wyszlismy po za rozmiar tablicy");
return tab[i];
}
pomiar& operator=(const pomiar& ob);
unsigned& size(){return roz;}
const unsigned& size()const{return roz;}
~pomiar(){delete []tab;}
};
pomiar& pomiar::operator=(const pomiar& ob)
{
if(this!=&ob)
{
opis = ob.opis;
roz = ob.roz;
delete tab;
tab = new double[roz];
for(int i = 0 ; i < roz ; i++)
{
tab[i]=ob.tab[i];
}
return *this;
}
else {*this;}
}
ostream& operator << (ostream& out,const pomiar& ob)
{
out << ob.opis <<endl ;
for(int i = 0 ; i < ob.roz ; i++)
{
out << ob.tab[i] << "\t" ;
}
return out << endl;
}
class analiza:public pomiar{
public:
analiza():pomiar(){}
analiza(const string& a1,const double *p,const double *k):pomiar(a1,p,k){}
analiza(const string& a1,const unsigned a2):pomiar(a1,a2){}
analiza(const analiza& ob):pomiar(ob){};
double srednia()const throw (string);
double variancja () const throw (string);
double odchylenie () const throw (string);
analiza& operator=(const analiza& r){
pomiar::operator=(r);
return *this;
}
};
double analiza::srednia()const throw (string)
{
if(roz==0)throw string ("Nie mozna dzielic przez 0");
double suma = 0;
for(int i = 0 ; i < roz ; i++)
{
suma +=tab[i];
}
return suma/roz;
}
double analiza::variancja () const throw (string)
{
if (roz==0) throw string ("rozmiar zerowy, nie moznadzielic");
double sr= srednia();
double variancja=0;
for (unsigned i=0;i <roz;++i)
variancja+= (tab[i]-sr)*(tab[i]-sr);
return variancja/roz;
}
double analiza::odchylenie () const throw (string) {
double v= variancja();
return sqrt(v);
}
int main()
{
double dane1[] = { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9 };
double dane2[] = { 6.2, 5.0, 3.8, 5.4, 4.6, 6.0, 4.0, 7.5, 2.5 };
double dane3[] = { 0, 4, 0, 4, 0, 4 };
analiza a1("Wysokosc trawy [ cm ] ", dane1, dane1+9);
analiza a2("Moc czynna generatora [ MW ] ", dane2, dane2+9);
analiza a13("test", dane3, dane3+6);
cout << a1 << "srednia: " << a1.srednia() << endl<<"wariancja: " << a1.variancja()<< endl<< "odchylenie: " <<a1.odchylenie() << endl;
cout <<endl << a2 << "srednia: " << a2.srednia() << endl<<"wariancja: " << a2.variancja()<< endl<< "odchylenie: " <<a2.odchylenie() << endl;
cout <<endl << a13 << "srednia: " << a13.srednia() << endl<< "wariancja: " << a13.variancja()<< endl<< "odchylenie: "<< a13.odchylenie() << endl;
analiza a3("Temperatura w lutym [ C ] ", 27 );
a3[0]=-3;
a3[5]=-10;
a3[10]=-8;
a3[15]=-2;
a3[20]=1;
a3[25]=2;
a3[26]=3;
cout <<endl<< a3 << "srednia: " << a3.srednia() << " wariancja: " << a3.variancja() << " odchylenie: " << a3.odchylenie() << endl;
analiza a4;
cout << a4 << a4.srednia() << a4.variancja() <<a4.odchylenie()<< endl;
/* a4 = a3;
for (unsigned i = 0 ; i < a4.size(); ++i)
cout << a4[i] << ' ' ;
cout << a4 << a4.srednia() << a4.variancja() <<
a4.odchylenie();
analiza a5(" + korekta temperatury ", 27 );
for (unsigned i = 0 ; i < a5.size(); ++i)
a5[i]+= 1 ;
a4 = a4 + a5 ;
cout << a4 << a4.srednia() << a4.variancja() <<a4.odchylenie();*/
return 0;}