Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Evgen.O
0 / 0 / 0
Регистрация: 06.12.2011
Сообщений: 9
#1

Перегрузка операции - C++

11.12.2011, 17:33. Просмотров 461. Ответов 2
Метки нет (Все метки)

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

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
#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%(float a);
}; // end of DV body
  DV DV::operator%(float a)
{DV L(*this);
for(int j=0;j<n;++j)L.x[j]=(int)x[j]%(int)a;return L;}
// end of DV
 
  void main()
{cout<<"\n\n mem0="<<coreleft()<<'\n';
 {int n=3; float y[3]={1,2,3};
{ DV dv(n,y),d(dv);
   cout<<"\n  dv(); ->"; dv();
  d=dv%2; cout<<"\n d=dv%2; d(); ->"; d();
 cout<<"\n mem="<<coreleft()<<'\n';
}
 }cout<<"\n mem="<<coreleft(); getch();
}
По программе вопросов нет.Программа перегружается.Вопрос заключается в создании блок-схемы, неясно как показать перегруженную операцию,содержащуюся в классе, производном от заданного класса VECTOR.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2011, 17:33
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Перегрузка операции (C++):

Перегрузка операции - C++
Здравствуйте! Нужно перегрузить операцию &lt;&lt; для вставки полей объекта класса в файл. Есть класс Hostel c полями FIO, GroupNumber и...

Перегрузка операции [] - C++
Добрый день. Столкнулся с недопониманием, странной ошибкой. #include &lt;iostream&gt; #include &quot;windows.h&quot; class Array { int...

Перегрузка операции - C++
Добрый день, Друзья! Столкнулся с такой проблемой, необходимо сравнить 2 пары чисел, вводимых с клавиатуры: Я перегрузил операцию ввода...

Перегрузка операции >> - C++
Вообщем хочу перегрузить операцию &gt;&gt; и инициализировать с ее помощью класс. Но что-то перемудрил и компилятор ругается на эту функцию: ...

Перегрузка операции - C++
Здравствуйте, можете пожалуйста помочь с кодом на перегрузку операции: + − добавить элемент в множество (типа set+item); + −...

Перегрузка операции >> - C++
Добрый день! Решил сделать класс с перегруженными операциями ввода и вывода, с выводом все в порядке, но с вводом не получается никак. При...

2
romex
45 / 45 / 4
Регистрация: 11.04.2010
Сообщений: 223
11.12.2011, 17:54 #2
блок схема - это графическое описание алгоритма.
Структуру классов на блок-схеме отображать вовсе не обязательно. Операция над объектами обозначается ее знаком( +-/* и т.п.).

Не по теме:

Просто ужасная табуляция, изучите правила оформления кода

1
Evgen.O
0 / 0 / 0
Регистрация: 06.12.2011
Сообщений: 9
11.12.2011, 18:06  [ТС] #3
Цитата Сообщение от romex Посмотреть сообщение
блок схема - это графическое описание алгоритма.
Структуру классов на блок-схеме отображать вовсе не обязательно. Операция над объектами обозначается ее знаком( +-/* и т.п.).

Не по теме:

Просто ужасная табуляция, изучите правила оформления кода

Спасибо.
За табуляцию извиняюсь, исправлюсь.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2011, 18:06
Привет! Вот еще темы с ответами:

Перегрузка операции ~ - C++
Задача: Перегрузить операцию ~ (унарная операция) так, чтобы она изменяла знак закрытых элементов – данных на противоположный для класса,...

Перегрузка операции - C++
Всем привет! Помогите сделать пожалуйста задание, а то совсем я не понимаю его :-| Перегрузите операции суммы, скалярного...

Перегрузка операции % - C++
Как перегрузить операцию % в с++?

Перегрузка операции = - C++
Здравствуйте, в программе вылезает такая ошибка MainUnit.cpp(86): E2034 Cannot convert 'string' to 'UnicodeString' в связи с этим...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru