Форум программистов, компьютерный форум CyberForum.ru

Запрограммировать и протестировать заданную перегруженную операцию, содержащуюся в классе, производном от заданного класса VECTOR. - C++

Восстановить пароль Регистрация
 
Myccon
Сообщений: n/a
19.12.2011, 19:07     Запрограммировать и протестировать заданную перегруженную операцию, содержащуюся в классе, производном от заданного класса VECTOR. #1
Помогите пожалуйста решить задачку.

Запрограммировать и протестировать заданную перегруженную операцию,
содержащуюся в классе, производном от заданного класса VECTOR.
V  объект, которому принадлежит метод (перегруженная операция),
L – локальный объект (определяется как копия V),
F – формальный объект, a – скаляр, A – массив, j=0,1,…,n-1
Пример. Скалярное произведение векторов:
F1*F2 { а= F1. xj * F2. xj ; возвращается a. }

Задание: V^a{ L. xj =pow(V.xj ,a); возвращается L.}

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <stdio.h>
#include <alloc.h>
#include <math.h>
#include <conio.h>
#include <iostream.h>
 struct VECTOR{int n; float*x;
 void nw(){x=new float[n];}
// default  constructor:
 VECTOR(){n=0;x=0;}
// constructor with 1 arg. :
 VECTOR(int fn){n=fn; nw();}
// constructor with 2 arg. :
 VECTOR(int n,float*x);
// copying  constructor:
 VECTOR(VECTOR&v);
// destructor:
~VECTOR(){if(x)delete[]x;}
//V=F {V.n=F.n;V.x[j]=F.x[j];return*this==V
//(we can write V1=V2=V3 due to VECTOR&)}:
 VECTOR&operator=(VECTOR&F);
//  V() {output V.x[0], V.x[1],... }:
 void operator()(FILE*f);
// V[j] {return V.x[j]
//(we can write V1[i]=V2[j]=V3[k] due to float&...)}:
 float&operator[](int j){return x[j];}
 }; // end of VECTOR body
  VECTOR::VECTOR(int fn,float*fx)
{n=fn; nw(); for(int j=0;j<n;++j)x[j]=fx[j];}
  VECTOR::VECTOR(VECTOR&F)
{n=F.n;nw();for(int j=0;j<n;++j)x[j]=F.x[j];}
  VECTOR&VECTOR::operator=(VECTOR&F)
{if(x)delete[]x; n=F.n;nw();
for(int j=0;j<n;++j)x[j]=F.x[j];return*this;}
  void VECTOR::operator()(FILE*f=stdout)
{for(int j=0;j<n;++j)fprintf(f,"% -7g",x[j]);}
// end of VECTOR
 
// independant function:
  float operator*(VECTOR&v1, VECTOR&v2)
{float a=0; for(int j=0;j<v1.n;++j)
a+=v1.x[j]*v2.x[j]; return a;}
 
 struct DV:VECTOR{DV():VECTOR(){}DV(int fn):VECTOR(fn){}
DV(int n,float*x):VECTOR(n,x){};
DV(DV&v):VECTOR(v){};
DV&operator++(int);
}; // end of DV body
  DV&DV::operator++(int)                                         -
{for(int j=0;j<n;++j)x[j]++;return*this;}
// end of DV
 
  void main(){cout<<"\n\n mem0="<<coreleft()<<'\n';
 {int m=0, n=3; float y[3]={1,2,3};
//tests of constructors (VECTOR v1(n,y),v2(v1),v3;)
//and operators ( operator=,  operator() ):
 VECTOR v1(n,y),v2(v1),v3; v3=v2;
cout<<"VECTOR v1(n,y),v2(v1),v3; v3=v2; v3(); -> ";
v3();
// test of operator*:
m=v2*v3; cout<<"\n m=v2*v3; -> m="<<m;
// test of operator++:
 cout<<"\n mem="<<coreleft()<<'\n';
{ DV dv(n,y),d(dv);
 d++; cout<<"\n d++; d(); ->"; d();
 cout<<"\n mem="<<coreleft()<<'\n';
}}cout<<"\n mem="<<coreleft(); getch(); }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2011, 19:07     Запрограммировать и протестировать заданную перегруженную операцию, содержащуюся в классе, производном от заданного класса VECTOR.
Посмотрите здесь:

Ошибка при вызове виртуальной функции в производном классе C++
C++ Конструктор в производном классе
C++ Производный класс не видит перегруженную операцию базового класса
Не могу перегрузить [] в производном классе C++
C++ Оператор вывода в производном классе
C++ Как сделать компоненты базового класса доступными в производном классе, но недоступными вне классов?
Вызов оператора= в производном классе C++
C++ Создать перегруженную операцию operator= для копирования строк

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 16:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru