Реализация библиотеки для работы с

Вид материалаДокументы

Содержание


Глобальные константы
Глобальные переменные
По классам и экземплярам классов
По методам
По способу защиты переменных
По именам переменных
Динамические массивы
По методам
Таблица тестов для одномерных массивов
Вернуться к таблице тестов
Вернуться к таблице тестов
Вернуться к таблице тестов
Вернуться к таблице тестов
Вернуться к таблице тестов
Скриншот №1,2
Скриншот №5,6
Скриншот №9
Скриншот №11
Скриншот №12,13,14
Скриншот №18
...
Полное содержание
Подобный материал:
  1   2   3   4   5


ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

РОССИЙСКОЙ ФЕДЕРАЦИИ


Государственное образовательное учреждение высшего профессионального образования «Московский государственный институт радиотехники,

электроники и автоматики (Технический Университет)»

­­­­­­­­­­­­­­­­­­­­­­­­_________________________________________________________________


кафедра «Математическое обеспечение вычислительных систем»


Курсовой проект


на тему

Реализация библиотеки для работы с

одномерными, двумерными, статическими и динамическими массивами.


по дисциплине «объектно-ориентированное программирование»


Учебные группы:

Студенты:

Руководитель: д.т.н., профессор: Федотова Д.Э.


Москва – 2009


ОГЛАВЛЕНИЕ


1. Структура классов 3

2. Системные соглашения 4

3. Методы 20

3.1. Общие методы 20

3.2. Индивидуальные методы для одномерного

статического массива 23

3.3. Индивидуальные методы, реализованные в

базовом классе, но используемые только в подклассах 24

3.4. Индивидуальные методы, реализованные в базовом

классе и используемые в подклассах без изменения 25

3.5. Индивидуальные методы для двумерного статического

массива развернутого по строкам 25

3.6. Индивидуальные методы для двумерного статического

массива развернутого по столбцам 26

4. Таблица тестов

4.1. Для одномерных массивов 28

4.2. Для двумерных массивов 32

5. Листинг программы на С++ 38

6. Листинг программы на Delphi 53

7. Вывод 75


Структура классов работающих с одномерным и двумерным статическими массивами.




Системные соглашения.



Имя данного

Семантика данного

Диапазон изменения данного







статические массивы










Глобальные константы




1

nn

Количество элементов в одномерном массиве


1,127

2

ss

Количество строк в двумерном массиве


1,127

3

cc

Количество столбцов в двумерном массиве


1,127

4

ll

Количество элементов в двумерном развернутом статическом массиве


1,127







Глобальные переменные




5

n

Количество элементов в одномерном массиве, которые задает пользователь.


0,127

6

s

Количество строк в двумерном массиве, которые задает пользователь.


0,127

7

с

Количество столбцов в двумерном массиве, которые задает пользователь.


0,127

8

l

Количество элементов в двумерном развернутом массиве


0,127

9

ArrayStatic[nn]

Одномерный статический массив


1,127

10

TwoDimenArray[ss][cc]

Двумерный статический массив


1,127

11

NewArrayStatic[ll]

Двумерный развернутый массив


1,127







По классам и экземплярам классов




12

class MyArr

Этот класс проверяет ввод с клавиатуры и создает одномерный и двумерный статические массивы.

class MyArr

{

public:

bool check(char x[10]);

void createArrayStatic();

void createTwoDimenArray();

void createDynArray();

void createDynArrayT();

};




13

myArrayStatic

Экземпляр класса MyArr (для создания одномерного массива)




14

myTwoDimenArray

Экземпляр класса MyArr (для создания двумерного массива)




15

class SearchAndSort

Базовый класс для работы с одномерным статическим массивом

class SearchAndSort

{

public:

virtual void SortMin();

virtual void SortMax();

virtual void printArray();

void searchMax();

void searchMin();

void searchMaxT();

void searchMinT();

void searchMinForSort(short pos);

void searchMaxForSort(short pos);

void searchMinForSortT(short pos);

void searchMaxForSortT(short pos);

void printTwoDimArray();

short GetMax();

short GetNumMax();

short GetMin();

short GetNumMin();

protected:

short max;

short numMax;

short min;

short numMin;

};




16

mySearchAndSort

Экземпляр класса SearchAndSort




17

class TwoDimenStr

Потомок класса SearchAndSort для работы с двумерным статическим массивом (по сторкам)

class TwoDimenStr : public SearchAndSort

{

public:

void createNewArrayStatic();

void SortMin();

void SortMax();

void printArray();

};




18

myTwoDimStr

Экземпляр класса TwoDimenStr




19

class TwoDimenCol

Потомок класса SearchAndSort для работы с двумерным статическим массивом (по столбцам)

class TwoDimenCol : public SearchAndSort

{

public:

void createNewArrayStatic();

void SortMin();

void SortMax();

void printArray();

};




20

myTwoDimCol

Экземпляр класса TwoDimenCol










По методам




21

bool check(char x[10]);

Метод проверки вводимых данных

bool MyArr::check(char x[10]){

short j=0,z;

bool d;

if (x[0]==’-‘) { d=false; j++;z=4;}

z=4;

while (x[j]!=’\0’ && j
d = isdigit (x[j]); j++;

if (!d) return d; else d =true;

}

x[j]=’\0’;

return d;

}




22

void createArrayStatic();

Метод создания одномерного статического массива

void MyArr::createArrayStatic(){

char x[10] ;

short i=0,a=0;

while (1)

{

cout<<(Rus(«\tВведите количество элементов массива от 1 до 127»))<<»\n»;

cin >> x ;

if (MyArr::check(x) )

{

n=atoi(x) ;

if (n>0 && n<=127) { break; }

}

cout<< (Rus(«\a\t\tВведено ошибочное значение\n\n»));

}

while (i
{

cout<<(Rus(«Введите элемент массива – целое число от -128 до 127\n»));

cin >> x ;

if (MyArr::check(x) )

{

a=atoi(x) ;

if (a>=-128 && a<=127)

{ ArrayStatic[i]=a; i++; }

else cout<< (Rus(“\a\t\tВведено ошибочное значение\n\n”));

}

else cout<< (Rus(“\a\t\tВведено ошибочное значение\n\n”));

}

}




23

void createTwoDimenArray ();

Метод создания двумерного статического массива

void MyArr::createTwoDimenArray(){

char x[10];char y[10];char el[10];

short k=0,a=0,temp=0;

while (1)

{

cout<<(Rus(«\tВведите количество строк массива от 1 до 127»))<<»\n»;

cin >> x ;

if (MyArr::check(x) )

{

n=atoi(x) ;

if (n>0 && n<=127) { break; }

}

cout<< (Rus(«\a\t\tВведено ошибочное значение\n\n»));

}

while (1)

{

cout<<(Rus(«\tВведите количество столбцов массива от 1 до «))<<(127/atoi(x))<<»\n»;

cin >> y ;

if (MyArr::check(y) )

{

n=atoi(y) ;

if (n>0 && n<=(127/atoi(x))) { break; }

}

cout<< (Rus(«\a\t\tВведено ошибочное значение\n\n»));

}

s=atoi(x) ; c=atoi(y);

while (k
{

cout<<(Rus(«Введите элемент массива – целое число от -128 до 127\n»));

cin >> el ;

if (MyArr::check(el) )

{

a=atoi(el) ;

if (a>=-128 && a<=127)

{ ArrayStatic[k]=a; k++; }

else cout<< (Rus(“\a\t\tВведено ошибочное значение\n\n”));

}

else cout<< (Rus(“\a\t\tВведено ошибочное значение\n\n”));

}

k=0;

for (short i=0; i
for (short j = 0; j < c; j++){

temp = ArrayStatic[k];

TwoDimenArray[i][j] = temp;

k++;

}

}




24

void searchMax();

Метод базового класса. Поиск максимального элемента в одномерном массиве.

void SearchAndSort::searchMax(){

max = ArrayStatic[0];

numMax = 1;

for (short i = 0; i
if (ArrayStatic[i] > max) {

max = ArrayStatic[i];

numMax = i + 1;

}

}




25

virtual void searchMin();

Метод базового класса. Поиск минимального элемента в одномерном массиве. Будет переопределен в подклассах.

void SearchAndSort::searchMin(){

min = ArrayStatic[0];

numMin = 1;

for (short i = 0; i
if (ArrayStatic[i] < min) {

min = ArrayStatic[i];

numMin = i + 1 ;

}

}




26

void searchMinForSort (short pos);

Метод базового класса. Поиск минимального элемента в одномерном массиве. Используется при сортировке. Будет переопределен в подклассах.

void SearchAndSort::searchMinForSort(short pos){

min = ArrayStatic[pos];

numMin = pos;

for (short i = pos; i
if (ArrayStatic[i] < min) {

min = ArrayStatic[i];

numMin = i ;

}

}




27

void searchMaxForSort (short pos);

Метод базового класса. Поиск максимального элемента в одномерном массиве. Используется при сортировке. Будет переопределен в подклассах.

void SearchAndSort::searchMaxForSort(short pos){

max = ArrayStatic[pos];

numMax = pos;

for (short i = pos; i
if (ArrayStatic[i] > max) {

max = ArrayStatic[i];

numMax = i ;

}

}




28

virtual void SortMin();

Метод базового класса. Сортровка одномерного массива по возрастанию. Будет переопределен в подклассах.

void SearchAndSort::SortMin(){

short temp,pos;

for (short i=0; i
temp = ArrayStatic[i];

ArrayStatic[i]= SearchAndSort::GetMin();

ArrayStatic[SearchAndSort::GetNumMin()]= temp;

}

}




29

virtual void SortMax();

Метод базового класса. Сортровка одномерного массива по убыванию. Будет переопределен в подклассах.

void SearchAndSort::SortMax(){

short temp,pos;

for (short i=0; i
temp = ArrayStatic[i];

ArrayStatic[i] = SearchAndSort::GetMax(); ArrayStatic[SearchAndSort::GetNumMax()] = temp;

}

}




30

virtual void printArray();

Метод базового класса. Вывод на печать. Будет переопределен в подклассах.

void SearchAndSort::printArray(){

for (short i = 0; i
cout << ArrayStatic[i]<<”\t”;

cout <<”\n”;

}




31

void printTwoDimArray();

Метод базового класса. Вывод на печать исходного двумерного массива. Будет наследоваться и вызываться в подклассах без изменения.

void SearchAndSort::printTwoDimArray(){

for (short i = 0; i< s; i++){

for (short j = 0; j < c; j++)

cout << TwoDimenArray[i][j]<<”\t”;

cout <<»\n»;

}

}




32

short GetMax();

Метод базового класса. Обращение к максимальному элементу массива.

short SearchAndSort::GetMax(){

return max;

}




33

short GetNumMax();

Метод базового класса. Обращение к номеру максимального элемента массива по строкам.

Short SearchAndSort::GetNumMax(){

return numMax;

}




34

short GetMin();

Метод базового класса. Обращение к минимальному элементу массива.

Short SearchAndSort::GetMin(){

return min;

}




35

short GetNumMin();

Метод базового класса. Обращение к номеру минимального элемента массива по строкам.

Short SearchAndSort::GetNumMin(){

return numMin;

}




36

void searchMaxT();

Метод базового класса. Поиск максимального элемента и его номера в двумерном массиве.

void SearchAndSort::searchMaxT(){

l=s*c;

max = NewArrayStatic[0];

numMax = 1;

for (short i = 0; i
if (NewArrayStatic[i] > max) {

max = NewArrayStatic[i];

numMax = i + 1;

}

}




37

void searchMinT();

Метод базового класса. Поиск минимального элемента и его номера в двумерном массиве.

void SearchAndSort::searchMinT(){

l=s*c;

min = NewArrayStatic[0];

numMin = 1;

for (short i = 0; i
if (NewArrayStatic[i] < min) {

min = NewArrayStatic[i];

numMin = i + 1 ;

}

}




38

void searchMinForSortT(short pos);

Метод базового класса. Поиск минимального элемента в одномерном массиве. Используется при сортировке.

void SearchAndSort::SortMax(){

short temp;

for (short i=0; i
SearchAndSort::searchMaxForSort(i);

temp = ArrayStatic[i];

ArrayStatic[i] = SearchAndSort::GetMax();

ArrayStatic[SearchAndSort::GetNumMax()] = temp;

}

}




39




Метод базового класса. Поиск максимального элемента в одномерном массиве. Используется при сортировке.

void SearchAndSort::searchMaxForSortT(short pos){

l=s*c;

max = NewArrayStatic[pos];

numMax = pos;

for (short i = pos; i
if (NewArrayStatic[i] > max) {

max = NewArrayStatic[i];

numMax = i ;

}

}




40

void createNewArrayStatic ();

Метод подкласса TwoDimenStr. Создает двумерный выпрямленный по строкам массив.

Void TwoDimenStr::createNewArrayStatic (){

short temp = 0,k = 0;

for (short i = 0; i < s; i++)

for (short j = 0; j < c; j++){

temp = TwoDimenArray [i][j];

NewArrayStatic[k]=temp;

k++;

}

}




41

void SortMin();

Метод подкласса TwoDimenStr. Сортировка по строкам по возрастанию.

Void TwoDimenStr::SortMin(){

l=s*c;

short temp,pos;

for (short i=0; i
temp = NewArrayStatic[i]; NewArrayStatic[i] =TwoDimenStr::GetMin(); NewArrayStatic[TwoDimenStr::GetNumMin()]= temp;

}

}




42

void SortMax();

Метод подкласса TwoDimenStr. Сортировка по строкам по убыванию.

Void TwoDimenStr::SortMax(){

l=s*c;

short temp,pos;

for (short i=0; i
TwoDimenStr::searchMaxForSort(i);

temp = NewArrayStatic[i];

NewArrayStatic[i] = TwoDimenStr::GetMax();

NewArrayStatic[TwoDimenStr::GetNumMax()]= temp;

}

}




43

void printArray();

Метод подкласса TwoDimenStr. Вывод на печать отсортированного по строкам двумерного массива.

Void TwoDimenStr::printArray (){

short temp,k=0;

for (short i=0; i
for (short j = 0; j < c; j++){

temp = NewArrayStatic[k];

TwoDimenArray[i][j]=temp;

k++;

}

for (short i = 0; i< s; i++){

for (short j = 0; j < c; j++)

cout << TwoDimenArray[i][j]<<”\t”;

cout <<”\n”;

}

}




44

void createNewArrayStatic

();

Метод подкласса TwoDimenCol. Создает двумерный выпрямленный по столбцам массив.

Void TwoDimenCol::createNewArrayStatic (){

short temp = 0,k = 0;

for (short j = 0; j < c; j++)

for (short i = 0; i < s; i++){

temp = TwoDimenArray [i][j];

NewArrayStatic[k]=temp;

k++;

}

}




45

void SortMin();

Метод подкласса TwoDimenCol. Сортировка по столбцам по возрастанию.

Void TwoDimenCol::SortMin(){

l=s*c;

short temp,pos;

for (short i=0; i
TwoDimenCol::searchMinForSort(i);

temp = NewArrayStatic[i];

NewArrayStatic[i]=TwoDimenCol::GetMin();

NewArrayStatic[TwoDimenCol::GetNumMin()]= temp;

}

}




46

void SortMax();

Метод подкласса TwoDimenCol. Сортировка по столбцам по убыванию.

Void TwoDimenCol::SortMax(){

l=s*c;

short temp,pos;

for (short i=0; i
TwoDimenCol::searchMaxForSort(i);

temp = NewArrayStatic[i];

NewArrayStatic[i] = TwoDimenCol::GetMax();

NewArrayStatic[TwoDimenCol::GetNumMax()]= temp;

}

}




47

void printArray();

Метод подкласса TwoDimenCol. Вывод на печать отсортированного по столбцам двумерного массива.

void TwoDimenCol::printArray (){

short temp,k=0;

for (short i=0; i
for (short j = 0; j < s; j++){

temp = NewArrayStatic[k];

TwoDimenArray[j][i]=temp;

k++;

}

for (short i = 0; i< s; i++){

for (short j = 0; j < c; j++)

cout << TwoDimenArray[i][j]<<”\t”;

cout <<»\n»;

}

}










По способу защиты переменных




48

short max;

Защищенная переменная базового класса. Максимум.


-128,127

49

short min;

Защищенная переменная базового класса. Минимум.


-128,127

50

short numMax;

Защищенная переменная базового класса. Координата максимума.


0,127

51

short numMin;

Защищенная переменная базового класса. Координата максимума.


0,127







По именам переменных




52

i

1)Индекс строк в двумерном массиве

2)Индекс элементов при создании одномерного массива


0,127

53

j

1)Индекс столбцов в двумерном массиве

2)Индекс цикла считывания вводимых символов.


0,127

54

k

1)Параметр цикла при разворачивании двумерного массива и вывода на печать двумерного развернутого массива.

2)Параметр цикла при создании двумерного массива


0,127

55

temp

Переменная для хранения временного значения элемента двумерного массива


0,127

56

z

Граница кол-ва вводимых символов


0,4

57

x

Массив вводимых символов, в одномерном и двумерном массиве, кол-во строк


0,10

58

y

Массив вводимых символов, в двумерном массиве, кол-во столбцов


0,10

59

el

Элемент двумерного массива


-128,127

60

а

Элемент одномерного массива


-128,127

61

d

Переменная возвращаю значение работы функции

t,f

62

pos

Переменная, хранящая позицию максимального элемента в массиве


0,127







Динамические массивы










По классам и экземплярам классов




63

vp

Экземпляр класса DynArray




64

vb

Экземпляр класса DynArray




65

wp

Экземпляр класса DynArrayT




66

class DynArray

Класс одномерного динамического массива.

class DynArray

{

short d_AllEl;

short * d_hV;

public:

DynArray ( short );

~DynArray ( void );

short get ( short );

short set ( short, short );

void sort_p ( short );

void sort_b ( short );

void print ( short );

};




67

class DynArrayT

class DynArrayT

{

short d_AllEl;

short **d_hW;

public:

DynArrayT ( short, short );

~DynArrayT ( void );

short get ( short, short );

void print ( short, short );

void rebuild ( void );

};










По методам




68

DynArray

Конструктор одномерного динамического массива

DynArray::DynArray ( short in1 )

{

char x[10] ;

short i=0,a=0;


MyArr chk;


if (in1 == 0)

{

while (1)

{

cout<<(Rus("\tВведите количество элементов массива от 1 до 127"))<<"\n";

cin >> x ;

if (chk.check(x) )

{

n=atoi(x) ;

if (n>0 && n<=127) { break; }

else chk.MyError(1, x);

}

else chk.MyError(0, x);

}

}

else

n = in1;

d_hV = new short [n];

if (in1 == 0)

while (i
{

cout<<(Rus("Введите элемент массива - целое число от -128 до 127\n"));

cin >> x ;

if (chk.check(x) )

{

a=atoi(x) ;

if (a>=-128 && a<=127)

{

d_hV[i] = a;

i++;

}

else chk.MyError(2, x);

}

else chk.MyError(0, x);

}

}




69

~DynArray

Деструктор одномерного динамического массива

DynArray::~DynArray ( void )

{

delete[]d_hV;

}




70

short DynArray::get

Возвращает значение одномерного динамического массива по номеру элемента

short DynArray::get ( short in1 )

{

return d_hV[in1];

}




71

short DynArray::set

Устанавливает элемента одномерного динамического массива переданным на вход значением

short DynArray::set ( short in1, short in2 )

{

d_hV[in1] = in2;

return 0;

}




72

void DynArray::sort_p

Метод сортировки вставкой одномерного динамического массива

void DynArray::sort_p ( short in1 )

{

short i, j, tmp;


for (i = 0; i < in1; i++ )

{

tmp = d_hV[i];

for(j = i-1; j >= 0 && tmp < d_hV[j]; j--)

d_hV[j+1] = d_hV[j];

d_hV[j+1] = tmp;

}

}




73

void DynArray::sort_b

Метод сортировки "пузырек" одномерного динамического массива

void DynArray::sort_b ( short in1 )

{

short i,j,tmp;


for(i = 1; i < in1; i++)

for(j = in1 - 1; j >= i; j--)

if(d_hV[j-1] > d_hV[j])

{

tmp = d_hV[j-1];

d_hV[j-1] = d_hV[j];

d_hV[j] = tmp;

}

}




74

void DynArray::print

Печать одномерного динамического массива

void DynArray::print ( short in1 )

{

for (short i = 0; i< in1; i++){

cout << d_hV[i]<<"\t";

}

cout <<"\n";

}




75

DynArrayT

Конструктор двумерного динамического массива

DynArrayT::DynArrayT ( short in1, short in2 )

{

char x[10];char y[10];char el[10];

short k=0,a=0,temp=0;

MyArr chk;


if (in1 == 0 || in2 == 0)

{

while (1)

{

cout<<(Rus("\tВведите количество строк массива от 1 до 127"))<<"\n";

cin >> x ;

if (chk.check(x) )

{

n=atoi(x) ;

if (n>0 && n<=127) { break; }

else chk.MyError(1, x);

}

else chk.MyError(0, x);

}

while (1)

{

cout<<(Rus("\tВведите количество столбцов массива от 1 до "))<<(127/atoi(x))<<"\n";

cin >> y ;

if (chk.check(y))

{

n=atoi(y) ;

if (n>0 && n<=(127/atoi(x))) { break; }

else chk.MyError(3, x);

}

else chk.MyError(0, y);

}

s=atoi(x) ; c=atoi(y);

}

else

{

s = in1 ; c = in2;

};


d_hW = new short*[s];

for (short i = 0; i < s; i++)

d_hW[i] = new short[c];


if (in1 == 0 || in2 == 0)

while (k
{

cout<<(Rus("Введите элемент массива - целое число от -128 до 127\n"));

cin >> el ;

if (chk.check(el) )

{

a=atoi(el) ;

if (a>=-128 && a<=127)

{

ArrayStatic[k]=a;

k++;

}


else chk.MyError(2, x);

}

else chk.MyError(0, el);

}

k=0;

for (short i=0; i
for (short j = 0; j < c; j++){

temp = ArrayStatic[k];

d_hW[i][j] = temp;

k++;

}

}




76

~DynArrayT

Деструктор двумерного динамического массива

DynArrayT::~DynArrayT ( void )

{

short i;


for (i = 0; i < nn; i++)

delete[]d_hW[i];

delete[]d_hW;

}




77

DynArrayT::get

Возвращает значение двумерного динамического массива по номеру элемента

short DynArrayT::get ( short in1, short in2 )

{

return d_hW[in1][in2];

}




78

DynArrayT::rebuild

Переносит элементы из одномерного динамического массива в двумерный динамический массив

void DynArrayT::rebuild ( void )

{

short temp,k=0;


for (short i = 0; i< s; i++){

for (short j = 0; j < c; j++){

temp = ArrayStatic[k];

d_hW[i][j]=temp;

k++;

}

}

}




79

DynArrayT::get

Возвращает значение двумерного динамического массива по номеру элемента

short DynArrayT::get ( short in1, short in2 )

{

return d_hW[in1][in2];

}




80

DynArrayT::rebuild

Переносит элементы из одномерного динамического массива в двумерный динамический массив

void DynArrayT::rebuild ( void )

{

short temp,k=0;


for (short i = 0; i< s; i++){

for (short j = 0; j < c; j++){

temp = ArrayStatic[k];

d_hW[i][j]=temp;

k++;

}

}

}




81

DynArrayT::print

Печать двумерного динамического массива

void DynArrayT::print ( short in1, short in2 )

{

for (short i = 0; i< in1; i++){

for (short j = 0; j < in2; j++)

cout << d_hW[i][j]<<"\t";

cout <<"\n";

}

}






Методы

для одномерного и двумерного статических массивов

============ Общие методы ============

//======================= ОБЩИЕ МЕТОДЫ ==================================


//------------------- СООБЩЕНИЯ ОБ ОШИБКАХ ----------------------------------

void MyArr::MyError(short Err, char x[10]){

switch (Err){

case 0 : cout << (Rus(“\a\t Введеное вами значение “)); cout<< x; cout << (Rus( “ не является целым числом\n\n”)); break;

case 1 : cout << (Rus(«\a Введеное вами значение выходит за пределы заданного диапазона от 1 до 127\n\n»));break;

case 2 : cout << (Rus(«\a Введеное вами значение выходит за пределы заданного диапазона от -128 до 127\n\n»));break;

case 3 : cout << (Rus(«\a Введеное вами значение выходит за пределы заданного диапазона от 1 до «))<<(127/atoi(x))<<»\n\n»;break;

case 4 : cout << (Rus(«\a\t Данного пункта меню не существует\n\n»));break;

default : break;

}


}

//------------------ ПРОВЕРКА ВВОДИМЫХ ДАННЫХ ------------------------------


bool MyArr::check(char x[80]){

short j=0,z;

bool d;

if (x[0]==’-‘) { d=false; j++;z=5;}

z=4;

while (x[j]!=’\0’ && j
d = isdigit (x[j]); j++;

if (!d) return d; else d =true;

}

x[j]=’\0’;

return d;

}

//------------- СОЗДАНИЕ ОДНОМЕРНОГО СТАТИЧЕСКОГО МАССИВА -------------------

void MyArr::createArrayStatic(){

char x[80] ;

short i=0,a=0;


while (1)

{

cout<<(Rus(«\tВведите количество элементов массива от 1 до 127»))<<»\n»;

cin >> x ;

if (MyArr::check(x) )

{

n=atoi(x) ;

if (n>0 && n<=127) { break; }

else MyArr::MyError(1, x);

}

else MyArr::MyError(0, x);

}

while (i
{

cout<<(Rus(«Введите элемент массива – целое число от -128 до 127\n»));

cin >> x ;

if (MyArr::check(x) )

{

a=atoi(x) ;

if (a>=-128 && a<=127)

{ ArrayStatic[i]=a; i++; }

else MyArr::MyError(2, x);

}

else MyArr::MyError(0, x);

}

}

//--------------- СОЗДАНИЕ ДВУМЕРНОГО СТАТИЧЕСКОГО МАССИВА ------------------

void MyArr::createTwoDimenArray(){

char x[80];char y[80];char el[80];

short k=0,a=0,temp=0;

while (1)

{

cout<<(Rus(«\tВведите количество строк массива от 1 до 127»))<<»\n»;

cin >> x ;

if (MyArr::check(x) )

{

n=atoi(x) ;

if (n>0 && n<=127) { break; }

else MyArr::MyError(1, x);

}

else MyArr::MyError(0, x);

}

while (1)

{

cout<<(Rus(«\tВведите количество столбцов массива от 1 до «))<<(127/atoi(x))<<»\n»;

cin >> y ;

if (MyArr::check(y) )

{

n=atoi(y) ;

if (n>0 && n<=(127/atoi(x))) { break; }

else MyArr::MyError(3, x);

}

else MyArr::MyError(0, y);

}

s=atoi(x) ; c=atoi(y);

while (k
{

cout<<(Rus(«Введите элемент массива – целое число от -128 до 127\n»));

cin >> el ;

if (MyArr::check(el) )

{

a=atoi(el) ;

if (a>=-128 && a<=127)

{ ArrayStatic[k]=a; k++; }

else MyArr::MyError(2, x);

}

else MyArr::MyError(0, x);

}

k=0;

for (short i=0; i
for (short j = 0; j < c; j++){

temp = ArrayStatic[k];

TwoDimenArray[i][j] = temp;

k++;

}

}


//------------- СОЗДАНИЕ ОДНОМЕРНОГО ДИНАМИЧЕСКОГО МАССИВА ---------------

void MyArr::createDynArray(){

char x[80] ;

short i=0,a=0;


while (1)

{

cout<<(Rus(«\tВведите количество элементов массива от 1 до 127»))<<»\n»;

cin >> x ;

if (MyArr::check(x) )

{

n=atoi(x) ;

if (n>0 && n<=127) { break; }

}

cout<< (Rus(«\a\t\tВведено ошибочное значение\n\n»));

}

while (i
{

cout<<(Rus(«Введите элемент массива – целое число от -128 до 127\n»));

cin >> x ;

if (MyArr::check(x) )

{

a=atoi(x) ;

if (a>=-128 && a<=127)

{vp.set(i, a); vb.set(i, a); vc.set(i, a); i++;}

else cout<< (Rus(«\a\t\tВведено ошибочное значение\n\n»));

}

else cout<< (Rus(«\a\t\tВведено ошибочное значение\n\n»));

}

}

//---------------- СОЗДАНИЕ ДВУМЕРНОГО СТАТИЧЕСКОГО МАССИВА -----------------

void MyArr::createDynArrayT(){

char x[80];char y[80];char el[80];

short k=0,a=0,temp=0;

while (1)

{

cout<<(Rus(«\tВведите количество строк массива от 1 до 127»))<<»\n»;

cin >> x ;

if (MyArr::check(x) )

{

n=atoi(x) ;

if (n>0 && n<=127) { break; }

}

cout<< (Rus(«\a\t\tВведено ошибочное значение\n\n»));

}

while (1)

{

cout<<(Rus(«\tВведите количество столбцов массива от 1 до «))<<(127/atoi(x))<<»\n»;

cin >> y ;

if (MyArr::check(y) )

{

n=atoi(y) ;

if (n>0 && n<=(127/atoi(x))) { break; }

}

cout<< (Rus(«\a\t\tВведено ошибочное значение\n\n»));

}

s=atoi(x) ; c=atoi(y);

while (k
{

cout<<(Rus(«Введите элемент массива – целое число от -128 до 127\n»));

cin >> el ;

if (MyArr::check(el) )

{

a=atoi(el) ;

if (a>=-128 && a<=127)

{vp.set(k, a); k++;}

else cout<< (Rus(“\a\t\tВведено ошибочное значение\n\n”));

}

else cout<< (Rus(“\a\t\tВведено ошибочное значение\n\n”));

}

}

//--- ВЫВОД НА ПЕЧАТЬ ОДНОМЕРНОГО СТАТИЧЕСКОГО МАССИВА ---

void SearchAndSort::printArray(){

for (short i = 0; i
cout << ArrayStatic[i]<<”\t”;

cout <<”\n”;

}

//--- ВЫВОД НА ПЕЧАТЬ ИСХОДНОГО ДВУМЕРНОГО СТАТИЧЕСКОГО МАССИВА ---

void SearchAndSort::printTwoDimArray(){

for (short i = 0; i< s; i++){

for (short j = 0; j < c; j++)

cout << TwoDimenArray[i][j]<<”\t”;

cout <<»\n»;

}

}

= Индивидуальные методы для одномерного статического массива =

//--- ПОИСК ПЕРВОГО МАКСИМАЛЬНОГО ЭЛЕМЕНТА И ЕГО НОМЕРА В ОДНОМЕРНОМ СТАТИЧЕСКОМ МАССИВЕ ---

void SearchAndSort::searchMax(){

max = ArrayStatic[0];

numMax = 1;

for (short i = 0; i
if (ArrayStatic[i] > max) {

max = ArrayStatic[i];

numMax = i + 1;

}

}

//--- ПОИСК ПЕРВОГО МИНИМАЛЬНОГО ЭЛЕМЕНТА И ЕГО НОМЕРА В ОДНОМЕРНОМ СТАТИЧЕСКОМ МАССИВЕ ---

void SearchAndSort::searchMin(){

min = ArrayStatic[0];

numMin = 1;

for (short i = 0; i
if (ArrayStatic[i] < min) {

min = ArrayStatic[i];

numMin = i + 1 ;

}

}

//--- ПОИСК МИНИМАЛЬНОГО ЭЛЕМЕНТА В ОДНОМЕРНОМ СТАТИЧЕСКОМ МАССИВЕ,ПЕРЕДАЧА ЕГО ПОЗИЦИИ В СОРТИРОВКУ ---

void SearchAndSort::searchMinForSort(short pos){

min = ArrayStatic[pos];

numMin = pos;

for (short i = pos; i
if (ArrayStatic[i] < min) {

min = ArrayStatic[i];

numMin = i ;

}

}

//--- СОРТИРОВКА ВСТАВКАМИ ПО ВОЗРАСТАНИЮ ОДНОМЕРНОГО СТАТИЧЕСКОГО МАССИВА –

void SearchAndSort::SortMin(){

short temp;

for (short i=0; i
SearchAndSort::searchMinForSort(i);

temp = ArrayStatic[i];

ArrayStatic[i]= SearchAndSort::GetMin();

ArrayStatic[SearchAndSort::GetNumMin()]= temp;

}

}

//--- ПОИСК МАКСИМАЛЬНОГО ЭЛЕМЕНТА В ОДНОМЕРНОМ СТАТИЧЕСКОМ МАССИВЕ,ПЕРЕДАЧА ЕГО ПОЗИЦИИ В СОРТИРОВКУ ---

void SearchAndSort::searchMaxForSort(short pos){

max = ArrayStatic[pos];

numMax = pos;

for (short i = pos; i
if (ArrayStatic[i] > max) {

max = ArrayStatic[i];

numMax = i ;

}

}

//--- СОРТИРОВКА ВСТАВКАМИ ПО УБЫВАНИЮ ОДНОМЕРНОГО СТАТИЧЕСКОГО МАССИВА ---

void SearchAndSort::SortMax(){

short temp;

for (short i=0; i
SearchAndSort::searchMaxForSort(i);

temp = ArrayStatic[i];

ArrayStatic[i] = SearchAndSort::GetMax();

ArrayStatic[SearchAndSort::GetNumMax()] = temp;

}

}

= Индивидуальные методы реализованные в базовом классе, но используемые только в подклассах =

/--- ПОИСК МИНИМАЛЬНОГО ЭЛЕМЕНТА В ДВУМЕРНОМ СТАТИЧЕСКОМ МАССИВЕ,ПЕРЕДАЧА ЕГО ПОЗИЦИИ В СОРТИРОВКУ ---

void SearchAndSort::searchMinForSortT(short pos){

l=s*c;

min = NewArrayStatic[pos];

numMin = pos;

for (short i = pos; i
if (NewArrayStatic[i] < min) {

min = NewArrayStatic[i];

numMin = i ;

}

}

//--- ПОИСК МАКСИМАЛЬНОГО ЭЛЕМЕНТА В ДВУМЕРНОМ СТАТИЧЕСКОМ МАССИВЕ,ПЕРЕДАЧА ЕГО ПОЗИЦИИ В СОРТИРОВКУ ---

void SearchAndSort::searchMaxForSortT(short pos){

l=s*c;

max = NewArrayStatic[pos];

numMax = pos;

for (short i = pos; i
if (NewArrayStatic[i] > max) {

max = NewArrayStatic[i];

numMax = i ;

}

}

//--- ПОИСК ПЕРВОГО МАКСИМАЛЬНОГО ЭЛЕМЕНТА И ЕГО НОМЕРА В ДВУМЕРНОМ СТАТИЧЕСКОМ МАССИВЕ ---

void SearchAndSort::searchMaxT(){

l=s*c;

max = NewArrayStatic[0];

numMax = 1;

for (short i = 0; i
if (NewArrayStatic[i] > max) {

max = NewArrayStatic[i];

numMax = i + 1;

}

}

//--- ПОИСК ПЕРВОГО МИНИМАЛЬНОГО ЭЛЕМЕНТА И ЕГО НОМЕРА В ДВУМЕРНОМ СТАТИЧЕСКОМ МАССИВЕ ---

void SearchAndSort::searchMinT(){

l=s*c;

min = NewArrayStatic[0];

numMin = 1;

for (short i = 0; i
if (NewArrayStatic[i] < min) {

min = NewArrayStatic[i];

numMin = i + 1 ;

}

}

= Индивидуальные методы, реализованные в базовом классе и используемые в подклассах без изменения =

//--- ВЗЯТИЕ ПЕРВОГО МАКСИМАЛЬНОГО ЭЛЕМЕНТА В МАССИВЕ ---

short SearchAndSort::GetMax(){

return max;

}

//--- ВЗЯТИЕ ПЕРВОГО МИНИМАЛЬНОГО ЭЛЕМЕНТА В МАССИВЕ ---

short SearchAndSort::GetMin(){

return min;

}

//--- ВЗЯТИЕ НОМЕРА ПЕРВОГО МАКСИМАЛЬНОГО ЭЛЕМЕНТА В МАССИВЕ ---

short SearchAndSort::GetNumMax(){

return numMax;

}

//--- ВЗЯТИЕ НОМЕРА ПЕРВОГО МИНИМАЛЬНОГО ЭЛЕМЕНТА В МАССИВЕ ---

short SearchAndSort::GetNumMin(){

return numMin;

}

= Индивидуальные методы для двумерного статического массива развернутого по строкам =

//--- СОЗДАНИЕ ДВУМЕРНОГО СТАТИЧЕСКОГО МАССИВА ВЫПРЯМЛЕННОГО ПО СТРОКАМ ---

void TwoDimenStr::createNewArrayStatic (){

short temp = 0,k = 0;

for (short i = 0; i < s; i++)

for (short j = 0; j < c; j++){

temp = TwoDimenArray [i][j];

NewArrayStatic[k]=temp;

k++;

}

}

//--- СОРТИРОВКА ВСТАВКАМИ ПО СТРОКАМ ПО ВОЗРАСТАНИЮ ДВУМЕРНОГО СТАТИЧЕСКОГО МАССИВА ---

void TwoDimenStr::SortMin(){

l=s*c;

short temp;

for (short i=0; i
TwoDimenStr::searchMinForSortT(i);

temp = NewArrayStatic[i];

NewArrayStatic[i] = TwoDimenStr::GetMin();

NewArrayStatic[TwoDimenStr::GetNumMin()]= temp;

}

}

//--- СОРТИРОВКА ВСТАВКАМИ ПО СТРОКАМ ПО УБЫВАНИЮ ДВУМЕРНОГО СТАТИЧЕСКОГО МАССИВА ---

void TwoDimenStr::SortMax(){

l=s*c;

short temp;

for (short i=0; i
TwoDimenStr::searchMaxForSortT(i);

temp = NewArrayStatic[i];

NewArrayStatic[i] = TwoDimenStr::GetMax();

NewArrayStatic[TwoDimenStr::GetNumMax()]= temp;

}

}

//--- ВЫВОД НА ПЕЧАТЬ ОТСОРТИРОВАННОГО ПО СТРОКАМ ДВУМЕРНОГО СТАТИЧЕСКОГО МАССИВА ---

void TwoDimenStr::printArray (){

short temp,k=0;

for (short i=0; i
for (short j = 0; j < c; j++){

temp = NewArrayStatic[k];

TwoDimenArray[i][j]=temp;

k++;

}

for (short i = 0; i< s; i++){

for (short j = 0; j < c; j++)

cout << TwoDimenArray[i][j]<<”\t”;

cout <<»\n»;

}

}

= Индивидуальные методы для двумерного статического массива развернутого по столбцам =

//--- СОЗДАНИЕ ДВУМЕРНОГО СТАТИЧЕСКОГО МАССИВА ВЫПРЯМЛЕННОГО ПО СТОЛБЦАМ ---

void TwoDimenCol::createNewArrayStatic (){

short temp = 0,k = 0;

for (short j = 0; j < c; j++)

for (short i = 0; i < s; i++){

temp = TwoDimenArray [i][j];

NewArrayStatic[k]=temp;

k++;

}

}

//--- СОРТИРОВКА ВСТАВКАМИ ПО СТОЛБЦАМ ПО ВОЗРАСТАНИЮ ДВУМЕРНОГО СТАТИЧЕСКОГО МАССИВА ---

void TwoDimenCol::SortMin(){

l=s*c;

short temp;

for (short i=0; i
TwoDimenCol::searchMinForSortT(i);

temp = NewArrayStatic[i];

NewArrayStatic[i] = TwoDimenCol::GetMin();

NewArrayStatic[TwoDimenCol::GetNumMin()]= temp;

}

}

//--- СОРТИРОВКА ВСТАВКАМИ ПО СТОЛБЦАМ ПО УБЫВАНИЮ ДВУМЕРНОГО СТАТИЧЕСКОГО МАССИВА ---

void TwoDimenCol::SortMax(){

l=s*c;

short temp;

for (short i=0; i
TwoDimenCol::searchMaxForSortT(i);

temp = NewArrayStatic[i];

NewArrayStatic[i] = TwoDimenCol::GetMax();

NewArrayStatic[TwoDimenCol::GetNumMax()]= temp;

}

}

//--- ВЫВОД НА ПЕЧАТЬ ОТСОРТИРОВАННОГО ПО СТОЛБЦАМ ДВУМЕРНОГО СТАТИЧЕСКОГО МАССИВА ---

void TwoDimenCol::printArray (){

short temp,k=0;

for (short i=0; i
for (short j = 0; j < s; j++){

temp = NewArrayStatic[k];

TwoDimenArray[j][i]=temp;

k++;

}

for (short i = 0; i< s; i++){

for (short j = 0; j < c; j++)

cout << TwoDimenArray[i][j]<<”\t”;

cout <<»\n»;

}

}


Таблица тестов для одномерных массивов


N

Вводимые данные

Ожидаемый результат

Скриншот теста

1

N:= 0

ДС1: Введеное вами значение выходит за пределы заданного диапазона от 1 до 127

1

2

N:= A…Z,a…z.

ДС0: Введеное вами значение N не является целым числом

2

3

N:=””

ожидание ввода




4

N:= 1, A:= 127

max:=127 , maxNum:= 1

min:=127 , minNum:= 1

4


5

N:= 127,

A:=

0000000000

1111111111

4444444444

3333333333

2222222222

5555555555

6666666666

7777777777

9999999999

8888888888

4444444444

6666666666

-7-3-4-5-2-1-9


Отсортированный массив по

возрастанию убыванию

-9-7-5-4-3-2-1 9999999999

0000000000 8888888888

1111111111 7777777777

2222222222 6666666666

3333333333 6666666666

4444444444 5555555555

4444444444 4444444444

5555555555 4444444444

6666666666 3333333333

6666666666 2222222222

7777777777 1111111111

8888888888 0000000000

9999999999 -1-2-3-4-5-7-9


max:=9 , maxNum:=81

min:=-9 , minNum:= 127

5

6

N:= -1

ДС1: Введеное вами значение выходит за пределы заданного диапазона от 1 до 127

6

7

N:= 128

ДС1: Введеное вами значение выходит за пределы заданного диапазона от 1 до 127

7

8

N:= -129

ДС1: Введеное вами значение выходит за пределы заданного диапазона от 1 до 127

8

9

N:= 2,

A:= -128, 127

max:= 127 , maxNum:= 2

min:=-128 , minNum:= 1

9

10

N:= 1, A:= -129

ДС2: Введеное вами значение выходит за пределы заданного диапазона от -128 до 127

10

11

N:= 1, A:= 128

ДС2: Введеное вами значение выходит за пределы заданного диапазона от -128 до 127

11

12

N:= 1,

A:= A…Z,a…z.

ДС0: Введеное вами значение A не является целым числом

12

13

N:= 3, A:= 0 0 0

max:= 0, maxNum:= 1

min:= 0, minNum:= 1

13