Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 21.11.2010
Сообщений: 85

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

23.11.2011, 00:49. Показов 3371. Ответов 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;
}

кому не сложно, скиньте просто скелет или что, для работы с перегрузкой операторов
прототип в классе
функцию
и вызов..
зарание спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.11.2011, 00:49
Ответы с готовыми решениями:

Что такое "перегрузка операторов"? Каковы принципы работы перегруженных операторов и назначение указателя this
Добрый день . Помогите понять принцип работы перегрузки операторов. объясните пожалуйста в зависимости от чего зависит агрумент при...

Перегрузка операторов
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; class matrix { protected: int **mass; int n; public: ...

Перегрузка операторов
Привет, не подскажите, почему у меня тут не работает правильно += оператор. #include &lt;iostream&gt; #include &lt;conio.h&gt; ...

28
1 / 1 / 1
Регистрация: 21.11.2010
Сообщений: 85
23.11.2011, 02:03  [ТС]
Студворк — интернет-сервис помощи студентам
блин
всеровно не пойму эту фигню.. самое сложное наверно что я учил)
вот что я написал, и оно выводит мусор..
sum в мейне

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
// 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;}
    int operator+(C_Houses& ob);
    void getter();
    void calc();
};
 
int C_Houses::operator+(C_Houses& ob)
{
    int sum;
    sum=_Floors+ob._Floors;
    return sum; 
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    srand(unsigned(time(NULL)));
    setlocale(LC_CTYPE,"");
    C_Houses ob[size],a;
    int sum=0;
    for (int i=0; i<size; i++)
    {
        sum+=ob[i]+ob[i+1];
    }
    cout<<sum;
    _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;
}

в самом начале мейна функция
0
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 20
23.11.2011, 02:19
Цитата Сообщение от shaffle Посмотреть сообщение
C_Houses ob[size],a; int sum=0; for (int i=0; i<size; i++) { sum+=ob[i]+ob[i+1]; } cout<<sum;
C++
1
2
3
4
5
        for (int i=0; i<size; i++)
        {
                sum+=ob[i]+ob[i+1];
                i++; //
        }
С каждой итерацией цикла вам нужно делать вместо шага 1, шаг 2. Поэтому и теряется смысл использования оператора. Т.е. вы складывали 1-й со вторым, потом прибавляли к этому сумму 2-го и третьего, вот и получались совсем не те числа. В вашем случае 1-й со вторым + 3-й с 4-м + и т.д.
0
1 / 1 / 1
Регистрация: 21.11.2010
Сообщений: 85
23.11.2011, 02:27  [ТС]
шаг поставить i+=2?
поставил
выводит уже 91
а это мало чтото...

Добавлено через 1 минуту
а нет, нормально.. вывел кол-во этажей..
так же само делать для каждого поля?

Добавлено через 57 секунд
точнее как сделать что бы тут же считалось для каждого остольного поля?)
0
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 20
23.11.2011, 02:29
Поставьте точку останова в функции оператора и пройдитесь "пешком по коду", отслеживая все значения.
0
1 / 1 / 1
Регистрация: 21.11.2010
Сообщений: 85
23.11.2011, 02:30  [ТС]
Цитата Сообщение от al-tracer-93 Посмотреть сообщение
Поставьте точку останова в функции оператора и пройдитесь "пешком по коду", отслеживая все значения.
я перечитал в ручную и сумму вывело верно
теперь задача как сделать одновременно это для квартир и комнат...
0
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 20
23.11.2011, 02:31
Ну это уже вам решать что делать с другими полями, лучше написать обычные функции и не перегружать зря операторы.
0
1 / 1 / 1
Регистрация: 21.11.2010
Сообщений: 85
23.11.2011, 02:38  [ТС]
так задание такое... как перегрузить ? это надо делать еще 2 функции такие же?
и типы ихнее будут же одинаковые...

Добавлено через 5 минут
так еще и два надо перегрузить арифметических оператора
0
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 20
23.11.2011, 02:38
Можно сделать так.
C++
1
2
3
4
5
6
7
8
9
void C_Houses::operator + (C_Houses* obj)
{
this->_NofH += obj->_NofH;
this->_Floors += obj->_Floors;
// И т.д.
}
C_Houses s, array[SizeArray];
for(int i(0); i < SizeArray; i++)
s+array[i];
В итоге вы получите объект "s", в котором в членах-данных будет сумма членов-данных объектов массива "array"
0
1 / 1 / 1
Регистрация: 21.11.2010
Сообщений: 85
23.11.2011, 02:47  [ТС]
а часто вобще используют перегрузку операторов, и вобще это?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2011, 02:47

перегрузка операторов
на примере класса Line не получается правильно и без ошибок перегрузить следующие операторы ==, &lt;, !=, &lt;&lt;. с = и вроде...

Перегрузка операторов
Почему-то выводятся нули в qDebug(): #include &lt;QCoreApplication&gt; #include &lt;QDebug&gt; class Ct { public: int val; ...

Перегрузка операторов С++
Здравствуйте, недавно начал изучать С++, до этого старался решать проблемы самостоятельно, но сейчас чето я туплю/не понимаю. Простоя...

Перегрузка операторов -> <-
Здравствуйте в столь позднее время.. Какова особеность перегрузки операторов -&gt; и . ? Что возвращают ? Если можно ссылки...

перегрузка операторов
здравствуйте. недавно разбираю с С++, и как у всех начинающих возникла очередная непонятка, которую неудаетс победить самостоятельно. ...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru