Метод сортировки метод вставок, класс строка символов

Вид материалаДокументы
Подобный материал:
Метод сортировки - метод вставок, класс - строка символов


#include

#include

#include

#include

#include

// Класс - строка символов

class SymStr

{

private:

char *s; // Строка

int length; // Длина строки

public:

// Конструкторы

SymStr()

{

s=new char[1];

*s='\0';

length=0;

}

SymStr(char *str)

{

length = strlen(str);//Возвращает длину строки str(без учета символа завершения строки)

s = new char[length + 1];

strcpy (s, str);//копирует строку str в строку s

}

SymStr(const SymStr &str)

{

length = str.length;

s = new char[length + 1];

strcpy (s, str.s);//копирует строку str.s в строку s

}

// Деструктор

~SymStr() { delete s; }

// Перегрузка оператора >

int operator> (SymStr &);

// Перегрузка оператора >=

int operator>=(SymStr &);

// Перегрузка оператора <

int operator< (SymStr &);

// Перегрузка оператора <=

int operator<=(SymStr &);

// Перегрузка оператора ==

int operator==(SymStr &);

// Перегрузка оператора =

SymStr &operator=(SymStr &Object);

// Перегрузка оператора << для вывода строки

friend ostream &operator<<(ostream &, SymStr &);

};

// Перегрузка оператора >

int SymStr::operator> (SymStr &Object)

{

if(strcmp(s, Object.s) > 0) return 1;

return 0;

}

// Перегрузка оператора >=

int SymStr::operator>=(SymStr &Object)

{

if(strcmp(s, Object.s) >= 0) return 1;

return 0;

}

// Перегрузка оператора <

int SymStr::operator< (SymStr &Object)

{

if(strcmp(s, Object.s) < 0) return 1;

return 0;

}

// Перегрузка оператора <=

int SymStr::operator<=(SymStr &Object)

{

if(strcmp(s, Object.s) <= 0) return 1;

return 0;

}

// Перегрузка оператора ==

int SymStr::operator==(SymStr &Object)

{

if(strcmp(s, Object.s) == 0) return 1;

return 0;

}

// Перегрузка оператора =

SymStr& SymStr::operator=(SymStr &Object)

{

length = strlen(Object.s);

s = new char[length + 1];

strcpy(s, Object.s);

return *this;

}

// Перегрузка оператора << для вывода строки

ostream &operator<<(ostream &fo, SymStr &fp)

{

fo << fp.s;

return fo;

}

// Cортировка вставками

template

void insert (Type *x, int n)

{ int i, j;

Type t;

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

{

t = x[i];

for (j = i - 1; j >= 0 && t < x[j]; j--)

x[j + 1] = x[j]; // Сдвиг на одну позицию

x[j + 1] = t;

}

}

void main()

{

int i;

int mas1[30]; // Определяем целочисленный массив

double mas2[30]; // Определяем массив чисел с плавающей точкой

srand(time(NULL));// Инициализация генератора случайных чисел

// Заполняем массивы случайными числами

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

{ mas1[i] = rand()%30;

mas2[i] = rand()%30 * 0.01;

}

cout << "\t\t\tsortirovka with method insert\n\n";

// Сортировка целых чисел

insert(mas1, 30);

cout << "Result sortirovki int chisla :\n";

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

cout << mas1[i] << " ";

// Cортировка чисел с плавающей точкой

insert(mas2, 30);

cout << "\n\nResult sortirovki chisla with double point:\n";

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

cout << mas2[i] << " ";

SymStr mas3[5] = {"alik", "alat", "diana", "rachtiam", "lena"};

// Cортировка символьных строк

insert(mas3, 5);

cout << "\n\nResult sortirovki bitovich strok:\n";

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

cout << mas3[i] << " ";

getch();

}

Результаты работы программы
Сортировка методом вставок
Результат сортировки целых чисел:
0 0 1 2 3 4 6 7 8 8 8 9 10 11 12 12 13 13 14 15 16 19 20 21 22 26 27 28 28 29

Результат сортировки чисел с плавающей точкой:
0 0.01 0.03 0.03 0.05 0.06 0.06 0.07 0.08 0.09 0.09 0.1 0.12 0.13 0.14 0.14 0.15 0.15 0.16 0.16 0.18 0.19 0.19 0.2 0.2 0.22 0.26 0.27 0.27 0.29