• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Obiektowy c++, klasy - pomocy!

Object Storage Arubacloud
0 głosów
126 wizyt
pytanie zadane 25 maja 2019 w C i C++ przez adus Nowicjusz (120 p.)

Dzień dobry mam pytanie odnośnie zadań które dostałem na studiach do wykonania, czy mógłby mi ktos pomóc 1 zadaniem od 2 podpunktu? ;D Z góry dziękuje ;D 

 

Umieszczam swoj kod prosze o ewentualna poprawe naprowadzenie, przede wszystkim w drugim podpunkcie ;D 

#include <iostream>

using namespace std;

class Tablica //Zadanie na 5min definicja klasy
{
public:
    double *tab;
    int rozmiar;
    double wartosc;

    Tablica(int _rozmiar, double _wartosc=0.0)
    {
        this->tab = new double[_rozmiar]; //tworzenie tablicy w momencie tworzenia klasy
        this->rozmiar = _rozmiar;
        this->wartosc=_wartosc;

        for(int i=0; i<_rozmiar; i++)
        {
            tab[i] = _wartosc;
        }
    }

    Tablica(const Tablica & t2) //Tworzy kopie podanej funkcji
    {
        rozmiar = t2.rozmiar;
        wartosc = t2.wartosc;

        tab = new double[rozmiar];

        for(int i=0; i<t2.rozmiar; i++)
        {
            tab[i] = t2.tab[i];

        }
    }

    ~Tablica() //Usuwa pamiec przy usuwaniu Tablicy
    {
        delete [] tab;
    }

    friend ostream& operator<<(ostream &out, const Tablica &t1); //przeciazenie << do wyswietlania zawartosci tablicy;

    double& operator[](const int index); // przeciazenie do zwracania indexu tablicy;

    void dodaj_wartosc(double b) // dodaje wartosc a jak nie to tworzy 2x wieksza tablice i wtedy dodaje
    {

        double tab2[rozmiar];

        int a = b;

        //potrzebne zeby sprawdzic rozmiar tablicy
        for(int i=0; i<rozmiar; i++)
        {
            tab2[i]=tab[i];
        }
        int dlugosc = sizeof(tab2)/sizeof(tab[0]);

        if(dlugosc<rozmiar)
        {
            tab[dlugosc]=a;
        }
        else if(dlugosc>=rozmiar)
        {
            rozmiar = 2*rozmiar;

            int tab1[dlugosc];

            for(int i=0; i<dlugosc; i++) tab1[i]=tab[i];

            delete [] tab;

            tab = new double[rozmiar];


            for(int i=0; i<rozmiar; i++)
            {
                if(i<10) {tab[i]=tab1[i];}
                else {tab[i]=0;}
            }
            tab[10]=a;
        }

    }

    double zwroc()
    {
       return rozmiar;
    }

    int l_elementow()
    {
        double tab1[rozmiar];
        for(int i=0; i<rozmiar; i++)
        {
            tab1[1]=tab[i];
        }

        int dlugosc = sizeof(tab1)/sizeof(double);

        return dlugosc;

    }
};

//cialo przeciazenia do wyswietlania
ostream& operator<<(ostream& out, const Tablica& t1)
{

    for(int i=0; i<t1.rozmiar; i++)
    {
        out<<t1.tab[i]<<endl;
    }
    return out;
}

//cialo do przeciazenia do zwracania wartosci tablicy podanego indexu
double& Tablica::operator[](const int index)
{
    if((index>=0)&&(index<rozmiar))
    {
        return tab[index];
    }
    else
    {
        cout<<"Wyszedles poza zakres tablicy"<<endl;
        cout<<"Zakres to od: 0 do "<<rozmiar<<endl;
        return tab[index];
    }
}


int main()
{
    //Utworzenie obiektu normalnie 1.a
    cout<<"------------------"  <<endl;
    cout<<"Tworzenie klas 1.a"  <<endl;
    cout<<"------------------"  <<endl;
    cout<<endl<<endl<<endl;
    Tablica t1(10,9);

    //Utworzenie z new 1.a
    Tablica *t2 = new Tablica(10,7);
    cout<<endl<<endl;

    //kontruktor kopiuj¹cy - nie wiem czy o to chodzi³o

    cout<<"------------------"  <<endl;
    cout<<"CHYBA TO 1.b"        <<endl;
    cout<<"------------------"  <<endl<<endl;
    cout<<*t2;
    cout<<"------------------"  <<endl<<endl;

    Tablica t3( *t2);
    cout<<t3<<endl;
    cout<<endl<<endl;

    cout<<"------------------"  <<endl;
    cout<<"ZADANIE 1.c"         <<endl;
    cout<<"------------------"  <<endl;
    cout<<t1;
    cout<<"------------------"  <<endl<<endl;
    cout<<"Wartosc tablicy: "   <<t1[9]<<"dla indexu 10"<<endl<<endl;


    cout<<"------------------"  <<endl;
    cout<<"ZADANIE 1.d"         <<endl;
    cout<<"-------T2---------"  <<endl;

    t2->dodaj_wartosc(2); //dodawnaie wartosci dla klasy dynamicznej

    cout<<*t2;
    delete t2;

    cout<<"-------T1--------"  <<endl;

    t1.dodaj_wartosc(2); //dodawanie wartosci dla klasy statycznej
    cout<<t1;
    cout<<endl<<endl;

    cout<<"------------------"  <<endl;
    cout<<"ZADANIE 1.e"   <<endl<<endl;
    cout<<"Rozmiar: "<<t1.zwroc()<<endl;
    cout<<"Liczba elementow: "<<t1.l_elementow();

    cout<<endl<<endl;
    cout<<"------------------"  <<endl;
    cout<<"ZADANIE 1.f"         <<endl;
    cout<<"------------------"  <<endl;

    for( int i=1; ;i++ )
    {
        Tablica *t5 = new Tablica(10,8);
        cout<<"Tablica numer: "<<i<<endl;
        delete t5;
    }

    cout<<"------------------"  <<endl;
    return 0;
}

komentarz 25 maja 2019 przez tkz Nałogowiec (42,000 p.)
edycja 25 maja 2019 przez tkz

To już było, dokładnie to samo...

Edit:

No w sumie to trochę rozbudowana wersja tego  https://forum.pasja-informatyki.pl/431623/zadania-kolokwium

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 89 wizyt
pytanie zadane 23 sierpnia 2017 w C i C++ przez Darven Użytkownik (860 p.)
0 głosów
1 odpowiedź 117 wizyt
pytanie zadane 18 października 2016 w C i C++ przez programista15k Początkujący (370 p.)
0 głosów
1 odpowiedź 335 wizyt
pytanie zadane 19 grudnia 2019 w Java przez Padoski Użytkownik (990 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...