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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
#1

Перегрузка операторов - C++

23.11.2011, 00:49. Просмотров 1291. Ответов 28
Метки нет (Все метки)

Доброго времени суток. на завтра надо сделать работу, а я не могу понять как использовать перегрузку операторов.
помогите пожалуйста разобраться
вобщем надо найти количество значений переменных типа _Floors, _Flats, _Rooms..,
вот код...

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
// BSU012.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <Windows.h>
#include <ctime>
#define size 10
using namespace std;
 
class C_Houses
{
    int _NofH;
    int _Floors;
    int _Flats;
    int _Rooms;
public:
    void setter(int);
    int setter(){int flat=_Flats; return flat;}
    void getter();
    void calc();
};
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    srand(unsigned(time(NULL)));
    setlocale(LC_CTYPE,"");
    C_Houses ob[size];
    ob[0].calc();
    _getch();
    int search, p,c1=0,c2=0;
    char qw;
    for ( ; ; )
    {
        system("cls");
        for (int i=0; i<size; i++)
        {
            ob[i].setter(i+1);
            ob[i].getter();
            Sleep(25);
        }
        _getch();
        cout<<"Введите значение квартиры, для поиска в каком объекте оно находиться\n";
        cin>>search;
        for (int i=0; i<size; i++)
        {
            if (search==(p=ob[i].setter()))
            {
                c1++;
                cout<<"Вот она!!!\n";
                ob[i].getter();
                cout<<endl;
            }
            else
                c2++;
        }
        if (c2==c1)
        {
            cout<<"Оно не нашло то, чего вы искали :(((\n";
        }
        cout<<"Запустить еще раз? (Y or N)\n";
        cin>>qw;
        switch (qw)
        {
        case 'y':
        case 'Y':break;
        case 'n':
        case 'N': exit(1);
        default : exit(2);
        }
    }
    system("pause");
    return 0;
}
 
void C_Houses::setter(int a)
{
    _NofH=a;
    _Floors=rand()%15+1;
    _Flats=rand()%60+15;
    _Rooms=rand()%360+60;
}
 
void C_Houses::getter()
{
    printf("%d) Этажей: %d; Квартир: %d; Комнат: %d\n",_NofH,_Floors,_Flats,_Rooms);
    int floor=_Floors;
}

кому не сложно, скиньте просто скелет или что, для работы с перегрузкой операторов
прототип в классе
функцию
и вызов..
зарание спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2011, 00:49     Перегрузка операторов
Посмотрите здесь:

Перегрузка операторов - C++
Привет всем.Вот и начался новый учебный год,и значит началось програмирование, и значит начались мои проблемы. Первой задачей было...

Перегрузка операторов << и >> - C++
Добрый вечер! Задание состоит в следующем: необходимо изменить интерфейс методов Print и Read: std::ostream &amp;Print(std::ostream &amp; =...

Перегрузка операторов - C++
Добрый день! Интересует перегрузка операторов(--, !=, &lt;&lt;). Мне когда-то преподаватель объяснял через TPoint , но к сожалению забыл....

Перегрузка операторов - C++
Я тут пока изучаю перегрузку, написал следующий код: class String{ private: size_t size_; char* data_; public: ...

Перегрузка операторов - C++
Необходимо перегрузить следующие операторы: • Присвоение; • Сложение (+; в случае символьных полей сложения понимается как...

Перегрузка операторов - C++
Исправьте ошибку, неуказанный тип возвращаемого значения, какая я то глупая ошибка, но я не могу понять На этой строке point1=point2+5;...

Перегрузка операторов - C++
В общем задание следующее: Создайте класс chess (шахматы), в котором хранятся поля шахматной доски x, y (целые числа, лежащие в диапазоне...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
23.11.2011, 00:55     Перегрузка операторов #2
shaffle,

Вы, вообще-то, на русском языке можете изъясняться, или руссвкий язык вам с трудом дается? Что означает ваша фраза "надо найти количество значений переменных типа _Floors, _Flats, _Rooms.., "?!!!
al-tracer-93
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 20
23.11.2011, 01:00     Перегрузка операторов #3
Я так понимаю нужно реализовать функцию, которая возвращает количество байт, занимающие члены данные в классе C_Houses?
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
23.11.2011, 01:00  [ТС]     Перегрузка операторов #4
ну мне надо найти среднее значение квартир, этажей и комнат. по этому надо найти сумму через перегрузку операторов..
они рандомно заполняються, и с каждого обьекта надо брать значения, и таким образом найти сумму...
Сыроежка
Заблокирован
23.11.2011, 01:05     Перегрузка операторов #5
Цитата Сообщение от al-tracer-93 Посмотреть сообщение
Я так понимаю нужно реализовать функцию, которая возвращает количество байт, занимающие члены данные в классе C_Houses?
Это вы меня спрашиваете?!
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
23.11.2011, 01:07  [ТС]     Перегрузка операторов #6
нет, возвращяюшяя сумму определенного поля в каждом из обьектов
al-tracer-93
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 20
23.11.2011, 01:10     Перегрузка операторов #7
http://citforum.ru/programming/cpp/gl6.shtml#gl6.2.1
Сыроежка
Заблокирован
23.11.2011, 01:12     Перегрузка операторов #8
Цитата Сообщение от shaffle Посмотреть сообщение
нет, возвращяюшяя сумму определенного поля в каждом из обьектов
А причем здесь перегрузка операторов?! Складывайте эти целочисленные значения между собой. Какие проблемы? Нельзя делать перегрузку операторов, если все операнды относятся к фундаментальным типам.
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
23.11.2011, 01:18  [ТС]     Перегрузка операторов #9
• Перевантажити хоча б два арифметичні оператори;
(наприклад, знайти мінімальне або максимальне значення поля, суму значення, середнє значення і т. і.).

вот задание

Добавлено через 3 минуты
Цитата Сообщение от al-tracer-93 Посмотреть сообщение
спасибо, но это я знаю. я не знаю как задеействовать это в моей программе?
al-tracer-93
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 20
23.11.2011, 01:27     Перегрузка операторов #10
C++
1
2
3
4
5
6
7
int operator + (C_Houses*);
int C_Houses::operator + (C_Houses *tmp)
{
//Считаем все, что нужно и возвращаем значение
}
C_Houses p, a;
int n(p + a); // Само использование перегруженного оператора
P.S. Извиняюсь за корявый код, учиться программированию стал совсем недавно
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
23.11.2011, 01:30  [ТС]     Перегрузка операторов #11
Цитата Сообщение от al-tracer-93 Посмотреть сообщение
C++
1
2
3
4
5
6
7
int operator + (C_Houses*);
int C_Houses::operator + (C_Houses *tmp)
{
//Считаем все, что нужно и возвращаем значение
}
C_Houses p, a;
int n(p + a); // Само использование перегруженного оператора
P.S. Извиняюсь за корявый код, учиться программированию стал совсем недавно
int C_Houses::operator+(C_Houses *tmp)
{
int sum;
sum=_Floors+tmp._Floors;
return sum;
}

вот так выглядеть будет тело функции?
al-tracer-93
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 20
23.11.2011, 01:33     Перегрузка операторов #12
C++
1
2
3
4
5
6
int C_Houses::operator+(C_Houses *tmp)
{
int sum;
sum=_Floors+tmp->_Floors; // Вы обращаетесь к объекту через указатель, поэтому "->"
return sum;
}
Как вариант.
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
23.11.2011, 01:34  [ТС]     Перегрузка операторов #13
понял
и оно подсчитает кол-во квартир, получаеться, с каждого обьека?
al-tracer-93
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 20
23.11.2011, 01:37     Перегрузка операторов #14
Функция возвращает сумму членов данных _Floors, 2-х объектов C_Houses.
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
23.11.2011, 01:38  [ТС]     Перегрузка операторов #15
а как сделать не для двух, а для 10 там.. через цыкл?
al-tracer-93
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 20
23.11.2011, 01:40     Перегрузка операторов #16
В вашей программе есть класс, содержащий массив объектов C_Houses?
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
23.11.2011, 01:48  [ТС]     Перегрузка операторов #17
нет, класса один, C_Houses. просто массив обьектов

Добавлено через 6 минут
массив обьектов у меня в мейн функции
al-tracer-93
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 20
23.11.2011, 01:50     Перегрузка операторов #18
У вас массив объектов постоянно меняется, и писать функцию суммы членов-данных всех объектов C_Houses массива следует там, где он объявляется. Только весь смысл перегрузки сразу же пропадает.

Перегрузку оператора можно сделать передавая в функцию фиксированное число объектов.
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
23.11.2011, 01:53  [ТС]     Перегрузка операторов #19
а если сделать перегруженую функцию? такого рода как я сделал для поиска?

Добавлено через 1 минуту
и в ней искать сумму
или вобще найти сумму после присвоения рандомных значений
тогда ведь смысл не теряеться
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2011, 01:58     Перегрузка операторов
Еще ссылки по теме:

Перегрузка операторов - C++
Никак не возьму в толк, почему оно не работает! // CG5.cpp : Defines the entry point for the console application. // #include...

Перегрузка операторов С++ - C++
Задание: Написать код на языке С++ где реализуется перегрузка операторов. Тематика: База данных института(студенты, аспиранты,...

Перегрузка операторов +=, -=, *= - C++
Доброе время суток! Начал писать одно лабораторную роботу,с начала показалось что она крайне проста,но потом возникли непредвиденные...

перегрузка операторов - C++
Описать класс, реализующий указанный ниже тип данных. Класс должен содержать множество конструкторов для создания объектов определенного...

Перегрузка операторов +=, -=, *= и /= - C++
Есть перегруженные функции + - * / На MSDN есть такая фраза: &quot;Оператор += нельзя перегрузить непосредственно, однако пользовательские...


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

Или воспользуйтесь поиском по форуму:
al-tracer-93
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 20
23.11.2011, 01:58     Перегрузка операторов #20
Перегруженный оператора - это то же самое, что и обычная функция, только обращение к ней происходит по другому. Например
C++
1
2
3
C_Houses tmp;
tmp+"Name"; // Или
tmp.add("Name"); //Тело одно и то же, отличаются только способом вызова
Yandex
Объявления
23.11.2011, 01:58     Перегрузка операторов
Ответ Создать тему
Опции темы

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