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