Реферат: Реализация библиотеки для работы с
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
РОССИЙСКОЙ ФЕДЕРАЦИИ
Государственное образовательное учреждение высшего профессионального образования «Московский государственный институт радиотехники,
электроники и автоматики (Технический Университет)»
_________________________________________________________________
кафедра «Математическое обеспечение вычислительных систем»
Курсовой проект
на тему
Реализация библиотеки для работы с
одномерными, двумерными, статическими и динамическими массивами.
по дисциплине «объектно-ориентированное программирование»
Учебные группы:
Студенты:
Руководитель: д.т.н., профессор: Федотова Д.Э.
Москва – 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 Скриншот №1
^ Вернуться к таблице тестов
Скриншот №2
Вернуться к таблице тестов
Скриншот №4
^ Вернуться к таблице тестов
Скриншот №5
Вернуться к таблице тестов
Скриншот №6
^ Вернуться к таблице тестов
Скриншот №7
Вернуться к таблице тестов
Скриншот №8
^ Вернуться к таблице тестов
Скриншот №9
Вернуться к таблице тестов
Скриншот №10,11,12
^ Вернуться к таблице тестов
Скриншот №13
Вернуться к таблице тестов
Таблица тестов для двумерных массивов
N
Вводимые данные
Ожидаемый результат
Скриншот
1
s:= 0
ДС1: Введеное вами значение выходит за пределы заданного диапазона от 1 до 127
№1
2
s:= A…Z,a…z.
ДС0: Введеное вами значение s не является целым числом
№2
3
s:=””
ожидание ввода
4
s:=3
Введите кол-во столбцов массива от 1 до 42
№4
5
s:=3, c:= 0
ДС3: Введеное вами значение выходит за пределы заданного диапазона от 1 до 42
№5
6
s:=3, c:=A…Z,a…z.
ДС0: Введеное вами значение c не является целым числом
№6
7
s:=3, c:=””
ожидание ввода
8
s:= 1, c:= 1,
A:= 127
max:=127 , maxNum:= 1
min:=127 , minNum:= 1
№8
9
s:= 1, c:= 1,
A:= -128
max:=-128 , maxNum:= 1
min:=-128 , minNum:= 1
№9
10
s:= 1, c:= 127,
A:= 1 … 127
127
max:=127 , maxNum:=127
min:=1 , minNum:= 1
№10
11
s:= 127, c:= 1,
A:= 1 … 127
127
max:=127 , maxNum:=127
min:=1 , minNum:= 1
№11
12
s:= -1
ДС1: Введеное вами значение выходит за пределы заданного диапазона от 1 до 127
№12
13
s:= 128
ДС1: Введеное вами значение выходит за пределы заданного диапазона от 1 до 127
№13
14
s:= -129
ДС1: Введеное вами значение выходит за пределы заданного диапазона от 1 до 127
№14
15
s:=3, c:= -1
ДС3: Введеное вами значение выходит за пределы заданного диапазона от 1 до 42
№15
16
s:=3, c:= 128
ДС3: Введеное вами значение выходит за пределы заданного диапазона от 1 до 42
№16
17
s:=3, c:= -129
ДС3: Введеное вами значение выходит за пределы заданного диапазона от 1 до 42
№17
18
s:= 5, c:= 3,
A:=
-128 0 -26
12 -5 127
45 3 9
31 6 0
-39 -11 1
Массив, отсортированный по строкам по
возрастанию убыванию
-128 -39 -26 127 45 31
-11 -5 0 12 9 6
0 1 3 3 1 0
6 9 12 0 -5 -11
31 45 127 -26 -39 -128
max:= 127 , maxNum:= 6
min:=-128 , minNum:= 1
№18
19
s:= 5, c:= 3,
A:=
-128 0 -26
12 -5 127
45 3 9
31 6 0
-39 -11 1
Массив, отсортированный по столбцам по
возрастанию убыванию
-128 0 9 127 6 -5
-39 0 12 45 3 -11
-26 1 31 31 1 -26
-11 3 45 12 0 -39
-5 6 127 9 0 -128
max:= 127 , maxNum:= 12
min:=-128 , minNum:= 1
№19
20
s:= 2, c:= 2,
A:= -129
ДС2: Введеное вами значение выходит за пределы заданного диапазона от -128 до 127
№20
21
s:= 2, c:= 2,
A:= 128
ДС2: Введеное вами значение выходит за пределы заданного диапазона от -128 до 127
№21
22
s:= 2, c:= 2,
A:= A…Z,a…z.
ДС0: Введеное вами значение A не является целым числом
№22
23
s:= 3, c:= 2,
A:= 1 1
1 1
1 1
По строкамA
max:= 1, maxNum:= 1
min:= 1, minNum:= 1
№23
24
s:= 2, c:= 3,
A:= 1 1 1
1 1 1
По столбцам
max:= 1, maxNum:= 1
min:= 1, minNum:= 1
№24
^ Скриншот №1,2
Вернуться к таблице тестов
Скриншот №4
Вернуться к таблице тестов
^ Скриншот №5,6
Вернуться к таблице тестов
Скриншот №8
Вернуться к таблице тестов
^ Скриншот №9
Вернуться к таблице тестов
Скриншот №10
Вернуться к таблице тестов
^ Скриншот №11
…
….
Вернуться к таблице тестов
^ Скриншот №12,13,14
Вернуться к таблице тестов
Скриншот №15,16,17
Вернуться к таблице тестов
^ Скриншот №18
Вернуться к таблице тестов
Скриншот №19
Вернуться к таблице тестов
^ Скриншот №20,21,22
Вернуться к таблице тестов
Скриншот №23
Вернуться к таблице тестов
^ Скриншот №24
Вернуться к таблице тестов
Листинг программы на С++
Заголовочный файл (объявление классов)
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include
#include
#include
#include
// TODO: reference additional headers your program requires here
class MyArr
{
public:
bool check(char x[80]);
void createArrayStatic();
void createTwoDimenArray();
void createDynArray();
void createDynArrayT();
void MyError(short Err, char x[80]);
};
//-------------------------------------------------------------------
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;
};
class TwoDimenStr : public SearchAndSort
{
public:
void createNewArrayStatic();
void SortMin();
void SortMax();
void printArray();
};
class TwoDimenCol : public SearchAndSort
{
public:
void createNewArrayStatic();
void SortMin();
void SortMax();
void printArray();
};
//-------------------------------------------------------------------
// Одномерный динамический массив
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 sort_ch ( short, short ); // Обменная сортировка.
void print ( short );
};
// Двумерный динамический массив
class DynArrayT
{
short d_AllEl; // число элементов
short **d_hW; // указатель
public:
DynArrayT ( short, short ); // конструктор
~DynArrayT ( void ); // деструктор
short get ( short, short ); // Получить элемент массива по номеру
void print ( void );
<
еще рефераты
Еще работы по разное
Реферат по разное
Информационно-библиографический отдел
17 Сентября 2013
Реферат по разное
Vi международный благотворительный фестиваль детского творчества
17 Сентября 2013
Реферат по разное
История развития классического массажа
17 Сентября 2013
Реферат по разное
Методика подготовки медиаплана. Охват и частота, как основные параметры медиапланирования. Методика анализа медиаактивности конкурентов
17 Сентября 2013