HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 21.05.2008, 12:39
}I{ek
Новичок
Регистрация: 08.02.2008
Сообщений: 12
С нами: 9607368

Репутация: 2
По умолчанию

Помогите плз
Разреженный массив на основе статического массива указателей
Тип элементов раз-реженного массива данных - структура с полями: регистрационный номер, ФИО, ад-рес, ИНН.
Данные. Размер массива, массив указателей на данные.
Операции. Конструктор с параметром, инициализирующий размер массива и запол-няющий все элементы массива указателей значением 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" ;
        }
    }
}
//---------------------------------------------------------------------------
Помогите плз сделать перегрузку операций :
[] Доступ к элементу массива(вывод по индексу)
= Присваивание массива
= = Проверка массивов на равенство
! Удаление всех данных из массива
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Американским студентам запретили пользоваться Skype KPOT_f!nd Мировые новости. Обсуждения. 1 28.09.2006 03:47
Любителям квестов сюда!! FoX's Болталка 10 25.01.2005 20:42



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.