// przeciazanie operatorow, konstruktor parametryczny, kopiujacy
// }{
#include "stdafx.h"
#include <conio.h>
#include <malloc.h>
class DynArray
{
int* tab;
int N;
public:
DynArray () : N (0)
{
}
DynArray (int n, int m) : N (n)
{
tab = (int*) malloc (N*sizeof (int));
for (int i=0; i<N; i++)
tab[i] = m;
}
DynArray ( DynArray &dyn)
{
N= dyn.N;
tab = (int*) malloc (N*sizeof (int));
for (int i =0; i<N; i++)
{
tab[i] = dyn.tab[i];
}
}
int Size ()
{
return N;
}
void Display ()
{
printf ("[");
for (int i=0; i<N;i++)
{
printf ("%d",tab[i]);
if (i!=N-1)
{
printf (", ");
}
}
printf ("]");
}
void operator += (int liczba)
{
int i = N; // to ten uj!
N++;
//tab = (int*) realloc (tab, N*sizeof (*tab));
tab = (int*) realloc ( tab, ( (N)*(sizeof (int)) ) );
//tab = (int*) realloc (tab, sizeof (int)*(N) );
// realloc (tab, sizeof (int)* (N) );
// tab = (int*)realloc(tab, N*sizeof(int));
tab[i] = liczba;
// Display ();
}
void operator ! ()
{
for (int i=0;i<N;i++)
{
tab[i] *= -1;
}
}
void Koniec()
{
/*for (int i=0;i<N;i++)
{
free (tab);
}
*/
}
};
int _tmain(int argc, _TCHAR* argv[])
{
DynArray arr1;
DynArray arr2(5, 2);
printf("arr1 {%2d} = ", arr1.Size());
arr1.Display();
printf("\narr2 {%2d} = ", arr2.Size());
arr2.Display();
DynArray arr3 = arr2;
arr3 += -10;
arr3 += -20;
arr3 += -30;
printf("\narr3 {%2d} = ", arr3.Size());
arr3.Display();
!arr3;
printf("\n!arr3 {%2d} = ", arr3.Size());
arr3.Display();
printf("\narr2 {%2d} = ", arr2.Size());
arr2.Display();
arr1.Koniec(); // wydaje mis ei ze tablica jest juz automatycznie wyczyszczona, ale nie wiem jak i czemu xD
arr2.Koniec();
arr3.Koniec();
printf("\n\nKoniec.");
_getch();
return 0;
}
Comments
0 B
|👍
/👎