Obiekt klasy wyrzucony na ekran za pomoca operatora wyjscia.

0

(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;}
1

Ponieważ wywala ci wyjątek podczas obliczeń.

0

Usunalem wszystkie wyjatki z kodu i nadal nic sie nie wyswietla.

1

Gratulacje! Teraz dzielisz przez zero, więc wywala ci wyjątek.

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