Помогите плз
Разреженный массив на основе статического массива указателей
Тип элементов раз-реженного массива данных - структура с полями: регистрационный номер, ФИО, ад-рес, ИНН.
Данные. Размер массива, массив указателей на данные.
Операции. Конструктор с параметром, инициализирующий размер массива и запол-няющий все элементы массива указателей значением 0. Получение значения элемента по его индексу. Подсчет количества непус-тых элементов в массиве данных. Вывод элементов массива.
вот лаба :
Код:
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <vcl.h>
#pragma argsused
struct info
{
int RegCode;
char FIO[25];
char Address[255];
int INN;
};
class array
{
private:
int size;
info** a;
int counter;
void SetArray( int );
public:
array( int );
~array();
void Input();
void Output();
void OutputByIndex();
void GetSize();
};
array::array(int size)
{
SetArray(size);
}
array::~array()
{
for( int i = 0; i < counter; i++ )
{
delete a[i];
}
delete []a;
}
void array::SetArray(int siz)
{
a = new info*[siz];
for(int i = 0; i < siz; i++)
{
a[i] = 0;
}
size = siz;
counter = 0;
}
void array::Input()
{
if( counter != size )
{
a[ counter ] = new info;
cout << "Input registration code: ";
cin >> a[ counter ]-> RegCode;
cout << "Input FIO: ";
cin.get();
cin.getline(a[ counter ]->FIO, 25);
cout << "Input address: ";
cin.getline(a[ counter ]->Address,255);
cout << "Input INN: ";
cin >> a[ counter ]->INN;
counter++;
}
else
{
cout << "Error. Array is full";
}
}
void array::Output()
{
if( counter )
{
for( int i = counter - 1; i >= 0; i--)
{
cout << "Registration code: " << a[ i ]->RegCode << "\n";
cout << "FIO: " << a[ i ]->FIO << "\n";
cout << "Address: " << a[ i ]->Address << "\n";
cout << "INN: " << a[ i ]->INN << "\n";
cout << "\r\n";
}
}
else
{
cout << "Error. Array is empty";
}
}
void array::OutputByIndex()
{
int ind;
cout << "Input index: ";
cin >> ind;
if( counter )
{
if( ind >= counter )
cout << "Error. Index out of range";
else
{
cout << "Registration code: " << a[ ind ]->RegCode << "\n";
cout << "FIO: " << a[ ind ]->FIO << "\n";
cout << "Address: " << a[ ind ]->Address << "\n";
cout << "INN: " << a[ ind ]->INN << "\n";
cout << "\r\n";
}
}
else
cout << "Array is empty\n";
}
void array::GetSize()
{
cout << counter << "\n";
}
void menu()
{
cout<<"\n Viberite:\n";
cout<<"\n1. vvod.";
cout<<"\n2. vivod";
cout<<"\n3. vivod po indeksu.";
cout<<"\n4. kol-vo";
}
void main()
{
array obj(999999);
int i;
while (true)
{
menu();
cin>>i;
clrscr();
switch(i)
{
case 1: obj.Input(); break;
case 2: obj.Output(); break;
case 3: obj.OutputByIndex(); break;
case 4: obj.GetSize(); break;
default : cout<<"\nError!\n" ;
}
}
}
//---------------------------------------------------------------------------
Помогите плз сделать перегрузку операций :
[] Доступ к элементу массива(вывод по индексу)
= Присваивание массива
= = Проверка массивов на равенство
! Удаление всех данных из массива