cin>>n;
}
for (i=1; i<=n; i++)
{
cout<<"Введите "<<i<<"-тыйкомпонент ";
cin>>V[i];
}
}
void TVector::OutVec(int key, int w, int p)
// метод (функция) для вывода вектора на дисплей
{
// описаниеданных
int i;
string F,S;
// формирование формата
strcpy(F,"%");
itoa(w,S,10);
strcat(F,S);
strcat(F,".");
itoa(p,S,10);
strcat(F,S);
if (key==0) strcat(F,"f ");
else strcat(F,"f\n");
// выводвектора
for (i=1; i<=n; i++)
printf(F,V[i]);
if (key==0) printf("\n");
}
void TVector::SetVec(int comp, Vector X)
// метод (функция) для программного задания вектора
{
// описание данных
int i;
// передача данных
n=comp;
for (i=1; i<=n; i++)
V[i]=X[i];
}
void TVector::GetVec(int& comp, Vector X)
// метод (функция) для программного получения вектора
{
// описание данных
int i;
// передача данных
comp=n;
for (i=1; i<=n; i++)
X[i]=V[i];
}
TVector TVector::AddVec(TVector X, TVector Y)
// метод (функция) для сложения двух векторов
{
// описание данных
int i;
TVector R;
// сложение
if (X.n==Y.n) // векторы одинаковой длины
{
R.n=X.n;
for (i=1; i<=R.n; i++)
R.V[i]=X.V[i]+Y.V[i];
}
else // векторы разной длины
{
R.n=1;
R.V[1]=0;
}
return R;
}
TVector TVector::SubVec(TVector X, TVector Y)
// метод (функция) для вычитания двух векторов
{
// описание данных
int i;
TVector R;
// вычитание
if (X.n==Y.n) // векторы одинаковой длины
{
R.n=X.n;
for (i=1; i<=R.n; i++)
R.V[i]=X.V[i]-Y.V[i];
}
else // векторы разной длины
{
R.n=1;
R.V[1]=0;
}
return R;
}
double TVector::MultVec(TVector X, TVector Y)
// метод (функция) для вычисления скалярного произведения двух векторов
{
// описаниеданных
int i;
double S;
// умножение
if (X.n==Y.n) // векторы одинаковой длины
{
S=0;
for (i=1; i<=X.n; i++)
S+=X.V[i]*Y.V[i];
}
else // векторы разной длины
S=0;
return S;
}
При анализе текста следует обратить внимание на следующие моменты.
Заголовок каждой функции имеет сложный идентификатор, состоящий из имени класса и имени метода (функции), разделенных двумя двоеточиями :: - символаоперации разрешения области действия.
Входной параметр comp функции InpVec используется таким образом. Если его задали равным нулю, то происходит запрос числа компонентов вектора с клавиатуры, а если он имеет ненулевое положительное значение, то это значение сразу передается переменной n и начинается цикл запроса и ввода компонентов вектора. Это обеспечивает большую универсальность функции.
Первый параметр функции OutVec– переменная key – представляет собой ключ вывода: при key = 0 происходит вывод в строку, при других значениях – в столбец. Параметром w задается полное число полей вывода компоненты вектора, а параметром p – число полей для вывода ее дробной части. Формат вывода формируется в виде строковой переменной F, которая затем используется в функции printf(). Формирование строки формата выполняется с помощью строковых функций strcpy() и strcat(), а также функции преобразования целого в символьное представление itoa().
Методы класса непосредственно обращаются к переменным класса по их идентификаторам, что хорошо видно в первых четырех функциях. Но если объявленная переменная имеет тип данного же класса, обращение к ней осуществляется через сложный идентификатор, состоящий из имени самой этой переменной и имени переменной в данных класса, например, X.n, Y.V[i] и т.д. (см. тексты трех последних функций).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.