Использование классов при работе с векторами и матрицами (Лабораторная работа № 2), страница 3

В функциях-методах, выполняющих операции сложения, вычитания и умножения векторов, производится проверка одинаковости длины векторов. Если вектора имеет одинаковую длину, то соответствующая операция выполняется. В противном случае в качестве результата формируется вектор, имеющий одну компоненту, равную нулю.

Пример главной функции, использующей класс TVector для  выполнения операций сложения, вычитания и скалярного умножения векторов приведен на листинге  4.

Листинг 4

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

#include "tvector.h"

void main()

{

// описание данных

     TVector X,Y,Z;

     double S;

// задание вектора X

clrscr();

cout<<endl<<"Вводим вектор X"<<endl<<endl;

     X.InpVec(0);

// задание вектора Y

cout<<endl<<"Вводим вектор Y"<<endl<<endl;

     Y.InpVec(0);

// суммирование векторов и вывод результата

Z=Z.AddVec(X,Y);

clrscr();

     cout<<endl<<"Вектор X:"<<endl<<endl;

     X.OutVec(0,5,2);

     cout<<endl<<"Вектор Y:"<<endl<<endl;

     Y.OutVec(0,5,2);

     cout<<endl<<"X + Y = "<<endl<<endl;

Z.OutVec(0,5,2);

     getch();

// вычитание векторов и вывод результата

Z=Z.SubVec(X,Y);

clrscr();

     cout<<endl<<"Вектор X:"<<endl<<endl;

     X.OutVec(0,5,2);

     cout<<endl<<"Вектор Y:"<<endl<<endl;

     Y.OutVec(0,5,2);

     cout<<endl<<"X - Y = "<<endl<<endl;

Z.OutVec(0,5,2);

     getch();

// умножение векторов и вывод результата

S=Z.MultVec(X,Y);

clrscr();

     cout<<endl<<"Вектор X:"<<endl<<endl;

     X.OutVec(0,5,2);

     cout<<endl<<"Вектор Y:"<<endl<<endl;

     Y.OutVec(0,5,2);

     cout<<endl<<"X*Y = "<<S<<endl;

getch();

}

В ней используются три объекта типа TVector – операнды X , Y и результат Z. Операнды вводятся с клавиатуры с помощью метода InpVec(). Затем с помощью методов AddVec(), SubVec() и MultVec() последовательно выполняются операции с векторами и результаты их выводятся на дисплей с помощью метода OutVec().

Для иллюстрации работы методов SetVec() и GetVec() может быть использована главная функция, приведенная на листинге 5.

Листинг 5

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

#include "tvector.h"

void main()

{

// описаниеданных

     int i,na,nb;

     Vector A,B;

TVector X,Y;

// задание вектора A

na=5;

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

A[i]=i+0.1*i;

// передача данных от вектора A вектору X

     X.SetVec(na,A);

// передача данных от вектора X вектору Y

     Y=X;

// передача данных от вектора Y вектору B

     Y.GetVec(nb,B);

// вывод вектора B

clrscr();

     cout<<"Вектор B:"<<endl<<endl;

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

       printf("%3.1f\n",B[i]);

getch();

}

В ней используются массивы типа Vector A и B и объекты типа TVector X и Y. Сначала программно задаются компоненты вектора A. Затем они с помощью метода

SetVec() передаются вектору X. Далее происходит передача данных от вектора X к вектору Y. Это выполняется простым оператором присваиванияY=X; . Для массивов типа Vector такое действие невозможно, а для объектов классов – выполняется. Затем данные от вектора Y с помощью метода GetVec() передаются вектору B. Выводимый в конце функции результат демонстрирует правильность передачи данных в цепочке A®X®Y®Bи работу используемых при этом методов SetVec()и GetVec(). Рекомендуется выполнить эту функцию и убедиться в правильности передачи данных. Можно еще с помощью метода OutVec() вывести данные векторов X и Y.