С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100

Оператор сравнения

13.12.2012, 16:00. Показов 1143. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Надо написать программу, которая переводит фунты в стоуны, используя класс. Класс содержит перегруженные операторы мат. операций (сложение, вычитание и умножение). Также прога должна создать массив объектов класса размером в 6 ячеек, инициализировать 3 из них, и найти минимальный и максимальный элементы. Короче, вот код:
Класс:
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
#ifndef _STONEWT_H_
#define _STONEWT_H_
class Stonewt
{
private:
    int stone;
    double pounds;
    double pds_left;
    char mode;
public:
    Stonewt();
    Stonewt(int n,double lbs,char form='s');
    Stonewt(double lbs,char form='p');
    ~Stonewt();
    void stone_mode();
    void pounds_mode();
    Stonewt operator+(double n) const;
    Stonewt operator*(double n) const;
    Stonewt operator-(double n) const;
    Stonewt operator==(const Stonewt &st) const;
    Stonewt operator<(const Stonewt &st) const;
    friend ostream & operator<<(ostream &os,const Stonewt &st);
};
#endif
Описание методов класса:
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
#include <iostream>
using namespace std;
#include "Stonewt.h"
Stonewt::Stonewt()
{
    stone=0;
    pounds=pds_left=0.0;
    mode='p';
}
Stonewt::Stonewt(double lbs, char form)
{
    stone=int(lbs)/14;
    pds_left=int(lbs)%14+lbs-int(lbs);
    pounds=lbs;
    mode=form;
}
Stonewt::Stonewt(int n, double lbs, char form)
{
    stone=n;
    pds_left=lbs;
    mode=form;
    pounds=stone*14+lbs;
}
Stonewt::~Stonewt()
{
}
void Stonewt::stone_mode()
{
    mode='s';
}
void Stonewt::pounds_mode()
{
    mode='p';
}
Stonewt Stonewt::operator +(double n) const
{
    Stonewt sum;
    sum.pounds=stone*14+pds_left+n;
    sum.stone=sum.pounds/14;
    sum.pds_left=int(sum.pounds)%14+sum.pounds-int(sum.pounds);
    return sum;
}
Stonewt Stonewt::operator -(double n) const
{
    Stonewt diff;
    diff.pounds=(stone*14+pds_left)-n;
    diff.stone=diff.pounds/14;
    diff.pds_left=int(diff.pounds)%14+diff.pounds-int(diff.pounds);
    return diff;
}
Stonewt Stonewt::operator *(double n) const
{
    Stonewt multip;
    multip.pounds=(stone*14+pds_left)*n;
    multip.stone=multip.pounds/14;
    multip.pds_left=int(multip.pounds)%14+multip.pounds-int(multip.pounds);
    return multip;
}
ostream & operator<<(ostream &os,const Stonewt &st)
{
    if(st.mode=='s')
        os<<st.stone<<" stones, "<<st.pds_left<<" pounds.\n";
    if(st.mode=='p')
        os<<st.pounds<<" pounds.\n";
    return os;
}
Stonewt Stonewt::operator ==(const Stonewt &st) const
{
    if(stone>st.stone)
        return *this;
    else
        return st;
    if(stone==st.stone||pounds>st.pounds)
        return *this;
    else
        return st;
}
Stonewt Stonewt::operator<(const Stonewt & st) const
{
    if(stone<st.stone)
        return st;
    else
        return *this;
    if(stone==st.stone||pounds<st.pounds)
        return st;
    else
        return *this;
}
Программа для тестирования класса:
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
#include <iostream>
using namespace std;
#include "Stonewt.h"
const int Size=6;
int main()
{
    Stonewt jackie=Stonewt(250.6,'s');
    Stonewt catie=Stonewt(12,3,'s');
    cout<<"Jackie:\n"<<jackie;
    cout<<"Catie:\n"<<catie;
    Stonewt dave;
    dave=jackie+12;
    cout<<dave;
    dave.stone_mode();
    cout<<"Dave : "<<dave<<"\n";
    dave=jackie*3;
    dave.stone_mode();
    cout<<"Dave : "<<dave<<"\n";
    Stonewt mass[Size]= {
        Stonewt(12,4.6),
        Stonewt(13,2),
        Stonewt(9,9)
    };
    Stonewt temp;
    Stonewt val=Stonewt(1,1);
    for(int i=0;i<Size;i++) {
        temp==mass[i];
        if(val<temp)
            val=temp;
    }
    cout<<"Maximum for mass is "<<val<<"\n";
    system("pause");
    return 0;
}
Жалуется на оператор сравнения, что-то неправильно сделано в условии if... помогите люди добрые, вообще не догадываюсь, как все исправить!!

Добавлено через 20 часов 33 минуты
Можно закрыть тему? Я просто уже разобрался ...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.12.2012, 16:00
Ответы с готовыми решениями:

Переменный оператор сравнения
Добрый день. Интересует такой вопрос: возможно ли переменной присвоить значение оператора сравнения. Что-то типа такого: if (i==1) ...

Не получается перегрузить оператор сравнения
class vremya { private: int h,m,s; public: void operator ++(int) { s++; if (s==60) ...

Является ли тернарный оператор оператором сравнения?
Является ли тернарный оператор оператором сравнения? Подскажите пожалуста

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.12.2012, 16:00
Помогаю со студенческими работами здесь

Компилятор путает знаки шаблона и оператор сравнения
В строчке std::priority_queue &lt; Corridor &gt; active; Ошибка no match for 'operator&lt;' Corridor.h

Чем отличается оператор присваивания (=) от оператора сравнения (==)?
чем они отличаются?

Можно ли задать оператор сравнения (< или >) для string
задача - создание шаблонного класса. и в нем используется оператор сравнения в одном из методов, задача предполагает использование инт,...

Реализовать оператор сравнения в классе длинных чисел (длинная арифметика)
Здравствуйте, дорогие форумчане. Недавно назрел вопрос, как бы сделать сравнение чисел длинной арифметики в дальнейшем коде? Сравнение...

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru