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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
zmei89
32 / 7 / 1
Регистрация: 10.09.2010
Сообщений: 835
#1

Преобразование типов. Дружественные функции - C++

07.12.2011, 00:14. Просмотров 1240. Ответов 0
Метки нет (Все метки)

Создать класс комплексных чисел. Определить перегруженную функцию, возвращающую максимальный из двух аргументов. Функция не является членом класса комплексных чисел. Перегруженные функции имеют аргументы типа int, double, complex. Тело перегруженных функций должны быть одинаковыми.
Создать два класса вектор (float *) и матрица (float **). Определить конструкторы - по умолчанию, с параметром, для класса матрица с двумя параметрами, копирования, деструкторы. Определить функцию умножения матрицу на вектор.


не много нашел помогите разобраться


Класс комплексных чисел
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <conio.h>
#include <iostream.h>
 
class compl
{
public:
float x,y;
compl();
/*Вводит компл число */   void vvod();
/*Выводит компл число */  void vivod ();
/* Оператор сложения двух комплексных чисел*/
compl operator+(compl c2);
/* Оператор вычитания двух комплексных чисел*/
compl operator-(compl c2);
/* Оператор умножения  двух комплексных чисел*/
compl operator*(compl c2);
};
 
compl::compl(){ }
 
/* Вывод комплексного числа */
void compl::vivod ()
{
cout <<x;
if (y>0)
cout <<"+"<<y<<"i";
else cout <<y<<"i";
}
 
void compl::vvod()
  {
  cout <<
  "\n Введите веществ. и мнимую части компл.числа (через пробел): ";
  cin >> x >> y ;
  }
 
compl compl::operator+(compl c2)
{
compl c1=*this,c3;
c3.x=c1.x+c2.x;
c3.y=c1.y+c2.y;
return c3;
}
 
compl compl::operator-(compl c2)
{
compl c1=*this,c3;
c3.x=c1.x-c2.x;
c3.y=c1.y-c2.y;
return c3;
}
 
compl compl::operator*(compl c2)
{
compl c1=*this,c3;
c3.x=c1.x*c2.x-c1.y*c2.y;
c3.y=c1.x*c2.y+c1.y*c2.x;
return c3;
}
 
void main()
{
compl  Z1,Z2,Z3;
 
cout<<"\n Сложение компл.чисел. Введите 1-е число: \n";
Z1.vvod();
cout<<"\n Введите 2-е число: \n";
Z2.vvod();
Z3 = Z1 + Z2;
cout<<"\n Результат: Z3=Z1+Z2 = ";
Z3.vivod();
cout<<"\n -------------------------------- ";
 
cout<<"\n Вычитание компл.чисел. Введите 1-е число: \n";
Z1.vvod();
cout<<"\n Введите 2-е число: \n";
Z2.vvod();
Z3 = Z1 - Z2;
cout<<"\n Результат: Z3=Z1-Z2 = ";
Z3.vivod();
cout<<"\n -------------------------------- ";
 
cout<<"\n Умножение компл.чисел. Введите 1-е число: \n";
Z1.vvod();
cout<<"\n Введите 2-е число: \n";
Z2.vvod();
Z3 = Z1 * Z2;
cout<<"\n Результат: Z3=Z1*Z2 = ";
Z3.vivod();
cout<<"\n -------------------------------- ";
 
cout<<"\n Для выхода - нажмите клавишу";
getch();  
}
перегружать имя функции

Как и в случае со встроенной операцией сложения, нам может понадобиться набор функций, выполняющих одно и то же действие, но над параметрами различных типов. Предположим, что мы хотим определить функции, возвращающие наибольшее из переданных значений параметров. Если бы не было перегрузки, пришлось бы каждой такой функции присвоить уникальное имя. Например, семейство функций max() могло бы выглядеть следующим образом:
C++
1
2
3
int i_max( int, int );
int vi_max( const vector<int> & );
int matrix_max( const matrix & );
Однако все они делают одно и то же: возвращают наибольшее из значений параметров. С точки зрения пользователя, здесь лишь одна операция – вычисление максимума, а детали ее реализации большого интереса не представляют.
Отмеченная лексическая сложность отражает ограничение программной среды: всякое имя, встречающееся в одной и той же области видимости, должно относиться к уникальной сущности (объекту, функции, классу и т.д.). Такое ограничение на практике создает определенные неудобства, поскольку программист должен помнить или каким-то образом отыскивать все имена. Перегрузка функций помогает справиться с этой проблемой.
Применяя перегрузку, программист может написать примерно так:
C++
1
2
3
4
int ix = max( j, k );
vector<int> vec;
//...
int iy = max( vec );

Перегрузка функций - это создание нескольких функций с одним именем, но с разными параметрами. Разные параметры значит что должно быть разным количество аргументов функции или их тип. Вот так например:

C++
1
2
3
void function(int x); 
void function(int x,int y); 
void function(float x);
Перегруженные имена функций - это главным образом удобство записи.Пример перегруженной функции-функция sqrt( ) (извлечение квадратного корня).Она перегружена для каждого типа параметра - int,float,double,long и т.д. Вы просто пишете sqrt(4) ili sqrt (3.463),компилятор сам понимает по типу параметра какую функцию надо вызвать.

пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream.h>
void f(int x);
void f(double x);
 
int main()
{
 
f(10);
f(25e9); //для тех кто не знает- 25e9 это 25*1000000000
return 0;
}
void f(int x)
{
 
cout<<" type of "<<x<<" is int"<<endl;
}
 
void f(double x)
{
 
cout<<" type of "<<x<<" is float"<<endl;
 Комментарий модератора 
Используйте теги форматирования кода!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2011, 00:14
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Преобразование типов. Дружественные функции (C++):

Преобразование типов. Дружественные функции. Конструктор копирования. - C++
Создать класс вещественных чисел Double. Определить перегруженную функцию, возвращающую максимальное из двух аргументов. Функция не...

Преобразование типов. Дружественніе функции. Конструктор копирования - C++
Напишите пожалуста 3 программы ато завал нада здать ( 1 Задача: Создать класс вещественных чисел Double. Пределить перегруженную функцию,...

Дружественные функции. Наследование. Перегрузка функции - C++
Здравствуйте, у меня проблема Не знаю куда Вставить имеющийся код(В какую строчку или строчки кода). Первый код это было 1 задание, 2-ой...

Дружественные функции - C++
День добрый. class Distance { private: int fut; int inch; public: Distance():fut(0),inch(0){}; Distance(int f,int...

Дружественные функции - C++
Доброго времени суток! Помогите пожалуйста разобраться с задачей: Создать классы: 1.Класс Машина (фирма, состояние, номер учета); ...

Дружественные функции - C++
Написал програмку по Лафоре. Однако на объявлении дружественной ф-и происходит ошибка компиляции. Может кто знает в чем может быть...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2011, 00:14
Привет! Вот еще темы с ответами:

дружественные функции - C++
Тема: дружественные функции Напишите программу обращения слова. Помогите решить на С++

Дружественные функции - C++
Создать объект динамический стек. Перегрузить операции +, +=, -= (с извлечением элемента).

Дружественные функции - C++
Задание такое: Дано 2 класса: stud, содержащий сведения о студенте (фамилия, вуз, номер группы) и vozrast, содержащий возраст студента....

Дружественные функции - C++
Напишите программу, вычеркивающую из данного слова все буквы «а» (так, чтобы, например, из слова «заноза» получилось «зноз»), через...


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

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

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