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

Как из дружественной функции сделать метод - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Матрица, максимальный элемент каждого столбца. http://www.cyberforum.ru/cpp-beginners/thread180661.html
Помогите пожалуйста с программой, не могу решить уже замучилась... Дана матрица 5х5. Найти максимальный элемент каждого столбца этоого массива. Заранее спасибо.
C++ Ввод и сортировка массива комплексных чисел Привет))) Пожалуйста, помогите мне создать эту программу!) Я буду вам благодарна) Разработать алгоритм и программу ввода с клавиатуры массива объектов – комплексных чисел и сортировки объектов в соответствии математическим алгоритмом задания. Вариант задания сортировки объектов по убыванию, модули которых сравнимы по модулю i и равны k (i-порядковый номер объекта) k=3 Программа... http://www.cyberforum.ru/cpp-beginners/thread180653.html
C++ Вычисление функции разложением в ряд
Помогите, пожалуйста, в решении задачи. Две недели бьюсь, никак решить не могу. Нужно составить программу для вычисления функции c помощью разложения в ряд: Вычислить и вывести на экран в виде таблицы значения функции на интервале от xn до xk с шагом dx с точностью eps. Для вычисления последующего члена ряда воспользоваться рекуррентной формулой Cn+1=Cn*T, где T - некоторый...
Разбор математических выражений C++
Добрый день, нуждаюсь в вашей помощи. Написал код программы для решения определённого уравнения методом половинного деления. Необходимо доработать код, чтобы можно было вводить и само уравнение с клавиатуры. Задание (В данной работе необходимо учесть, что программа должна подходить для решения не только приведенного в условии задачи уравнения и заданных для него интервалов, но для других...
C++ Сортировка http://www.cyberforum.ru/cpp-beginners/thread180621.html
Имеется довольно большой список людей, родившихся в США, с указанием штата, в котором они родились. Как подсчитать тех, кто родился в каждом штате? (Предпологается, что ни один человек не указан более одного раза. Как написать эту программу на СИ? Напишите ее с комментариями пожалуйста...или можно скинуть другую программу похожую.
C++ LSD сортировка Требуется написать LSD сортировку на массиве строк. В нете много этих сортировок только они на биты и байты. Помогите реализовать, плиз.!! подробнее

Показать сообщение отдельно
White Luna
 Аватар для White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
24.10.2010, 12:38     Как из дружественной функции сделать метод
Ну изначальное задание звучит так:

Реализовать класс Вектор наследник класса Комплекс. Перегрузить 1 префиксную, 1 бинарную, 1 унарную ф-цию. Описать дружественную ф-цию, перегрузить конструктор копирования либо оператор присваивания. В классе вектор определить метод вывода Вектора на экран, как виртуальный

Класс Комплекс делали на прошлой лабе, он верный, но у меня там вывод сделан как дружественная функция, а в этой лабе вывод должен быть методом, поэтому у меня вопрос как из дружественной функции можно сделать метод,

пыталась сама, но у ми выходит с ошибками

вот лаба та что с друж ф-цией как выводом
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include "stdafx.h"
#include "tchar.h"
#include "string.h"
#include "stdio.h"
#include "locale.h"
#include "iostream"
#include "conio.h"
using namespace std;
class KOMPLEX
{   private:
            double Re;
            double Im;
    public:
        KOMPLEX (double e=0, double y=0)
        {Re=e; Im=y;};
        KOMPLEX  minus(KOMPLEX f)
        { KOMPLEX Z(Re - f.Re, Im - f.Im);
             return Z;  };
        friend KOMPLEX  operator +(KOMPLEX a, KOMPLEX f)
        {  KOMPLEX  Z(a.Re + f.Re, a.Im + f.Im);
             return Z;};
        KOMPLEX  umnog(KOMPLEX f)
        {  KOMPLEX Z(Re * f.Re - Im * f.Im, Re * f.Im + Im * f.Re);
             return Z; };
        KOMPLEX  delit(KOMPLEX f)
        { KOMPLEX Z((Re * f.Re + Im * f.Im) / (f.Re * f.Re + f.Im * f.Im),(Im * f.Re - Re * f.Im) / (f.Re * f.Re + f.Im * f.Im));         
             return Z;};
        KOMPLEX   sopr(KOMPLEX f)
        {KOMPLEX Z(Re, -1 * Im);
            return Z;};
    friend void znak(KOMPLEX k) // cделать метод
        {   if (k.Im<0) { printf("%lf %lfi \n", k.Re, k.Im);}
                    else printf("%lf + i%lf \n", k.Re, k.Im);};
        KOMPLEX KOMPLEX::operator ++(int)
        {
            KOMPLEX u(0,0);
            u=*this;
            Re++;
            Im++;
             return u;
        };
        KOMPLEX KOMPLEX::operator --(void)
        {
            KOMPLEX u(0,0);
            u=*this;
            Re--;
            Im--;
            return u;
        };
};
class Vector: public KOMPLEX
{
private:
        double Re;
            double Im;
public:
    KOMPLEX::operator --;
    KOMPLEX::operator ++;
    KOMPLEX::umnog;
    KOMPLEX::minus;
    friend void znak(Vector k)
        {   if (k.Im<0) { printf("%lf %lfi \n", k.Re, k.Im);}
                    else printf("%lf i%lf \n", k.Re, k.Im);};
 
};
 
int _tmain()
{
setlocale (LC_ALL, "Russian");
KOMPLEX k, s;
 
        char w;
        double Re;
        double Im;
        int q=1;
        do 
        {
        printf("Введите  1оe числo \n ");
        scanf("%lf %lf", &Re, &Im);
        KOMPLEX a(Re,Im);
        printf ("%lf + i%lf \n", Re, Im);
 
        printf("Введите 2ое число \n ");
        scanf("%lf %lf", &Re, &Im);
        KOMPLEX f(Re, Im);
        printf ("%lf + i%lf \n", Re, Im);
 
 
        printf("Введите знак действи который хотите совершить -, +, *, /  или  s -  что будет означать что вам необходимо найти сопряженное  для 1ого комплексного числа: \n ");
        scanf("%s", &w); 
        printf (" Ответ \n");
        switch (w)
        {
                case '-':
                        znak(a.minus(f));   
                        break;
                case '+':
                        znak(a+f);
                        break;
                case '*':
                        znak(a.umnog(f));
                        break;
                case '/':
                        znak(a.delit(f));
                        break;
                case 's':
                        znak( a.sopr(f));
                        break;
        };
        printf ("Хотите повторить запрос нажмите 1, выйти нажмите 0 \n");
        scanf_s ("%d", &q);
        }
        while (q==1);
        system("pause");
        exit(0);
        _getch();
        return 0;
}
Добавлено через 45 минут
кто-нить мож подсказать???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru