У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


_type2>

void ProceadSTL<_type1, _type2>::SortVek1()

{

sort(m_vek1.begin(), m_vek1.end());

}

template <class _type1, class _type2>

void ProceadSTL<_type1, _type2>::SortVek2()

{

sort(m_vek2.begin(), m_vek2.end());

}

template <class _type1, class _type2>

void ProceadSTL<_type1, _type2>::MergeVek1Vek2()

{

sort(m_vek1.begin(), m_vek1.end());

sort(m_vek2.begin(), m_vek2.end());

merge(m_vek1.begin(), m_vek1.end(), m_vek2.begin(), m_vek2.end(), m_vek1.begin());

m_vek2.clear();

}

template <class _type1, class _type2>

void ProceadSTL<_type1, _type2>::SortMatrix1()

{

sort(m_matrix1.begin(), m_matrix1.end());

for (size_t i = 0 ; i < m_matrix1.size(); i++)

{

sort(m_matrix1[i].begin(), m_matrix1[i].end());

}

}

template <class _type1, class _type2>

void ProceadSTL<_type1, _type2>::SortMatrix2()

{

sort(m_matrix2.begin(), m_matrix2.end());

for (size_t i = 0 ; i < m_matrix2.size(); i++)

{

sort(m_matrix2[i].begin(), m_matrix2[i].end());

}

}

template <class _type1, class _type2>

void ProceadSTL<_type1, _type2>::MergeMatrix12()

{

sort(m_matrix1.begin(), m_matrix1.end());

sort(m_matrix2.begin(), m_matrix2.end());

merge(m_matrix1.begin(), m_matrix1.end(), m_matrix2.begin(), m_matrix2.end(), m_matrix1.begin());

m_matrix2.clear();

}

template <class _type1, class _type2>

bool ProceadSTL<_type1, _type2>::operator == (const ProceadSTL<_type1, _type2>& rhs)

{

if (this == & rhs){

return true;

}

if (m_size != rhs.m_size) {

return false;

}

if (m_vek1.size() != rhs.m_vek1.size()) return false;

if (m_vek2.size() != rhs.m_vek2.size()) return false;

if (m_matrix1.size() != rhs.m_matrix1.size()) return false;

if (m_matrix1.size() != rhs.m_matrix2.size()) return false;

if (m_vek1 == rhs.m_vek1) return true;

if (m_vek2 == rhs.m_vek2) return true;

if (m_matrix1 == rhs.m_matrix1) return true;

if (m_matrix2 == rhs.m_matrix2) return true;

}

template <class _type1, class _type2>

bool ProceadSTL<_type1, _type2>::operator != (const ProceadSTL<_type1, _type2>& rhs)

{

return (!operator == (rhs));

}

template <class _type1, class _type2>

bool ProceadSTL<_type1, _type2>::operator < (const ProceadSTL<_type1, _type2>& rhs)

{

if (this == & rhs) return false;

if (m_size < rhs.m_size) return true;

else return false;

if (m_vek1 < rhs.m_vek1) retutn true;

else return false;

}

template <class _type1, class _type2>

bool ProceadSTL<_type1, _type2>::operator <= (const ProceadSTL<_type1, _type2>& rhs)

{

return (operator == (rhs) || operator < (rhs));

}

template <class _type1, class _type2>

bool ProceadSTL<_type1, _type2>::operator > (const ProceadSTL<_type1, _type2>& rhs)

{

return (operator == (rhs) || operator < (rhs));

}

template <class _type1, class _type2>

bool ProceadSTL<_type1, _type2>::operator >= (const ProceadSTL<_type1, _type2>& rhs)

{

return (operator == (rhs) || operator > (rhs));

}

template <class _type1, class _type2>

ostream & operator << (ostream & output, const ProceadSTL<_type1, _type2>& pstl)

{

output << "Вектор 1 - \n[" << pstl.getSize() << "] (";

for (size_t i = 0; i < pstl.m_vek1.size(); i++ )

{

output << pstl.m_vek1[i] << " ";

}

output << ")\n";

output << "Вектор 2 - \n["<< pstl.getSize() << "] (";

for (size_t i = 0; i < pstl.m_vek2.size(); i++ )

{

output << pstl.m_vek2[i] << " ";

}

output << ")\n";

output << "Матриця 1 - \n["<< pstl.getSize() << "] (";

for (size_t i = 0; i < pstl.m_matrix1.size(); i++ )

{

for (size_t j = 0; j < pstl.m_matrix1[i].size(); j++ )

{

output << pstl.m_matrix1[i][j] << " ";

}

output << "\n";

}

output << ")\n";

output << "Матриця 2 - \n["<< pstl.getSize() << "] (";

for (size_t i = 0; i < pstl.m_matrix1.size(); i++ )

{

for (size_t j = 0; j < pstl.m_matrix1[i].size(); j++ )

{

output << pstl.m_matrix1[i][j] << " ";

}

output << "\n";

}

output << ")\n";

return output;

}

template <class _type1, class _type2>

istream & operator >> (istream & input, ProceadSTL<_type1, _type2> & pstl)

{

_type1 inputValue;

input >> inputValue;

return input;

}

Лістинг 3. Файл STL.cpp — Головний модуль прорами тестування

// STL.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include "ProceadSTL.h"

#include "ProceadSTL.cpp"

#include "strvalues.h"

#include <windows.h>

#include <stdlib.h>

#include <stdio.h>

#include <time.h>

typedef int typ1;

typedef double typ2;

typedef ProceadSTL<typ1, typ2> TWOTYPED;

#define DEFAULT_SIZE 10

void MakeMatrix(TWOTYPED& container);

void MakeVector(TWOTYPED& container);

void EraceAll(TWOTYPED& container);

void DeleteMatrix(TWOTYPED& container);

void ResizeMatrix(TWOTYPED& container);

void ResizeVectors(TWOTYPED& container);

void ResizeMatrix1(TWOTYPED& container);

void ResizeVector1(TWOTYPED& container);

void ResizeMatrix2(TWOTYPED& container);

void ResizeVector2(TWOTYPED& container);

void Show(const TWOTYPED& cont);

int _tmain(int argc, _TCHAR* argv[])

{

TWOTYPED container;

setlocale(LC_ALL, ".1251");

::SetConsoleTitle(OEM(STR::Title));

try

{

cout << "==============================\n"

<< "Введiть одну з можливих команд\n"

<< "\t'm' - створити випадкову матрицю\n\t'v' - створити випадковий масив\n"

<< "\t'e' - очистити всi\n\t'd' - видалити матрицi\n"

<< "\t'a' - змiнити розмiр матриць\n\t'z' - змiнити розмiр векторiв\n"

<< "\t'1' - змiнити розмiр матрицi 1\n\t'2' - змiнити розмiр вектора 1\n"

<< "\t'3' - змiнити розмiр матрицi 2\n\t'4' - змiнити розмiр вектора 2\n"

<< "\t's' - сортувати матрицi\n\t'w' - сортувати вектори\n"

<< "\t'!' - вихiд" << endl;

cout << "==============================\n";

char command;

for (;;)

{

cin >> command;

switch (command)

{

case 'm':

MakeMatrix(container);

break;

case 'v':

MakeVector(container);

break;

case 'e':

EraceAll(container);

break;

case 'd':

DeleteMatrix(container);

break;

case 'a':

ResizeMatrix(container);

break;

case 'z':

ResizeVectors(container);

break;

case '1':

ResizeMatrix1(container);

break;

case '2':

ResizeVector1(container);

break;

case '3':

ResizeMatrix2(container);

break;

case '4':

ResizeVector2(container);

break;

case 's':

container.SortMatrix1();

container.SortMatrix2();

Show(container);

break;

case 'w':

container.SortVek1();

container.SortVek2();

Show(container);

break;

case '!':

return 0;

default:

Show(container);

}

}

command = 0;

} catch (exception& e) {

std::cout << MakeError(e.what());

MessageBox(0, (LPCSTR)e.what(), LPCSTR("Помилка виконання програми"), MB_ICONERROR);

return -1;

}

return 0;

}

void MakeMatrix(TWOTYPED& container)

{

container.setMatrix1Size(DEFAULT_SIZE, DEFAULT_SIZE);

container.setMatrix2Size(DEFAULT_SIZE, DEFAULT_SIZE);

srand( (unsigned)time( NULL ) );

for (size_t i = 0; i < DEFAULT_SIZE; i++)

for (size_t j = 0; j < DEFAULT_SIZE; j++)

{

long rand100 = (((double) rand() / (double) 100) * 100 + 0);

container.getFromMatrix1(i,j) = rand100;

container.getFromMatrix2(i,j) = (typ2)rand();

}

Show(container);

}

void MakeVector(TWOTYPED& container)

{

container.ResizeVek1(DEFAULT_SIZE);

container.ResizeVek2(DEFAULT_SIZE);

srand( (unsigned)time( NULL ) );

for (int i = 0; i < DEFAULT_SIZE; i++)

{

long rand100 = (((double) rand() / (double) 100) * 100 + 0);

container.getFromVek1(i) = rand100;

container.getFromVek2(i) = (typ2)rand();

}

Show(container);

}

void EraceAll(TWOTYPED& container)

{

cout << "Знищенi всi данi з контейнера" << endl;

container.Clear();

Show(container);

}

void DeleteMatrix(TWOTYPED& container)

{

cout << "Всi данi з матриць знищенi" << endl;

container.ClearMatrix();

Show(container);

}

void ResizeMatrix(TWOTYPED& container)

{

int x, y;

cout << "Введiть розмiри матрицi 1" << endl;

cin >> x >> y;

container.setMatrix1Size(x, y);

cout << "Введiть розмiри матрицi 2" << endl;

cin >> x >> y;

container.setMatrix2Size(x, y);

Show(container);

}

void ResizeVectors(TWOTYPED& container)

{

int x;

cout << "Введiть розмiр вектора 1" << endl;

cin >> x ;

container.ResizeVek1(x);

cout << "Введiть розмiр вектора 2" << endl;

cin >> x ;

container.ResizeVek2(x);

Show(container);

}

void ResizeMatrix1(TWOTYPED& container)

{

int x, y;

cout << "Введiть розмiри матрицi 1" << endl;

cin >> x >> y;

container.setMatrix1Size(x, y);

Show(container);

}

void ResizeVector1(TWOTYPED& container)

{

int x;

cout << "Введiть розмiр вектора 1" << endl;

cin >> x ;

container.ResizeVek1(x);

Show(container);

}

void ResizeMatrix2(TWOTYPED& container)

{

int x, y;

cout << "Введiть розмiри матрицi 2" << endl;

cin >> x >> y;

container.setMatrix1Size(x, y);

Show(container);

}

void ResizeVector2(TWOTYPED& container)

{

int x;

cout << "Введiть розмiр вектора 2" << endl;

cin >> x ;

container.ResizeVek2(x);

Show(container);

}

void Show(const TWOTYPED& cont)

{

cout << cont;

}

3. Тестування можливостей класу за допомогою програми тестування

Рисунок 3.1. — Приклад тестування розробленого класу. Генерування випадкових векторів і матриць

Рисунок 3.2. — Інший приклад тестування розробленого класу.


Сторінки: 1 2 3 4 5