Описание программного комплекса. Модуль Description. Вид исходных файлов с данными, страница 8

//Если массив не пуст

if ( vector [ i ] != NULL )

system ( "cls" );

//Выводим шапку таблицы

showHeadTable ( );

//Пока существуют элементы в массиве

while ( vector [ i ] != NULL){

//Выводим текущий элемент

vector [ i ] -> show ( "line" );

//Если следующий элемент не пуст, выводим разделитель

if ( vector [ i + 1] != NULL ) showSeparator ( );

//Иначе закрываем таблицу

else showEndTable ( );

//Наращиваем индекс

i++;

}

system( "pause" );

}

//Функция добавления нового элемента в конец массива

void variety::addItem ( ){

//Инициализируем вспомогательные переменные

int temp = count, level = 0;

//Ввод административного уровня города

cout << "Enter the administrative level of the city: " << endl;

cout << "1: Capital" << endl;

cout << "2: Region" << endl;

cout << "3: District" << endl;

cout << "4: Large Village" << endl;

cin >> level;

//Согласно выбранном административному уровню создаем в массиве ссылку на новый объект

switch ( level ){

case ( 1 ):

vector [ temp ] = new Capital;

break;

case ( 2 ):

vector [ temp ] = new Region;

break;

case ( 3 ):

vector [ temp ] = new District;

break;

case ( 4 ):

vector [ temp ] = new Village;

break;

}

//Ввод количества жителей города

vector [ temp ] -> setPopulation ( );

//Ввод названия города

vector [ temp ] -> setName ( );

//Ввод главной достопримечательности

vector [ temp ] -> setAttraction ( );

//Наращиваем счетчик

count++;

//Выводим сообщение об успеном добавлении элемента

system ( "cls" );

cout << "Added element succesfull" << endl;

system("pause");

}

//Функция удаления элемента массива по его номеру

void variety::deleteItemId ( int id ){

//Если номер больше нуля и меньше количества элементов

if ( id > 0 && id <= count){

//Значит делаем "сдвиг" элементов влево, смещая тем самым ссылки в массиве

for ( int i = id - 1; i < count; i++)

vector [ i ] = vector [ i + 1 ];

//Удаляем последнюю сыллку в массиве

delete vector [ count - 1 ];

//Усеньшаем количество элементов на единицу

count--;

//Выводим сообщение об успешном удалении элемента

system ( "cls" );

cout << "Delete succesfull" << endl;

system( "pause" );

}

}

//Поиск элемента по названию города

void variety::findItem ( char* strTmp ){

//Инициализация вспомогательной переменной

int i = 0;

//Пока текущий элемент массива не пуст

while ( vector [ i ] != NULL){

//Если передано имя текущего элемента

if ( strcmp ( strTmp, vector [ i ] -> getName ( ) ) == 0){

//То выводим данные об этом элементе

cout << "The position in the array" << i + 1 << endl;

vector [ i ] -> show ( "element" );

//и заканчиваем дальнейший поиск

break;

}

//Иначе

else

//Переходим к следующему элементу

i++;

}

//Если весь массив проверили и не нашли элемента с таким значением

if ( i + 1 > count )

//То выводим соответсвующее сообщение

cout << "Element not found" << endl;

system( "pause" );

}

//Функция сортировки массива

void variety::sortMas ( ){

int k;

cout << "Sort by: " << endl << "1 -.- Population" << endl << "2 -.- Name" << endl << "3 -.- Attraction" << endl;

cin >> k;

switch ( k ){

case 1:

//Организуем внещний цикл для прохода по массиву

for ( int i = 0; i < count - 1; i++)

//Организуем внутренний цикл для прохода по массиву

for ( int j = 0; j < count - 1; j++ )

//Если популяция текущего города БОЛЬШЕ популяции следующего города