В функциях-методах, выполняющих операции сложения, вычитания и умножения векторов, производится проверка одинаковости длины векторов. Если вектора имеет одинаковую длину, то соответствующая операция выполняется. В противном случае в качестве результата формируется вектор, имеющий одну компоненту, равную нулю.
Пример главной функции, использующей класс 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.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.