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

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

Войти
Регистрация
Восстановить пароль
 
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
#1

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

13.12.2012, 16:00. Просмотров 778. Ответов 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 минуты
Можно закрыть тему? Я просто уже разобрался ...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2012, 16:00     Оператор сравнения
Посмотрите здесь:

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

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

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

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

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

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

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

Символы сравнения - C++
Приветствую. Пдскажите, пожалуйста, что означают символы сравнения &quot;:&quot; и &quot;?&quot; в контексте: while (x &gt; 0) { x -= div, ...

Счетчик сравнения - C++
куда его ставить?он ставиться перед if или после if?else и else if тоже ставим счетчик сравнения?while и do while?

сравнения строк - C++
Всем привет !! столкнулся с проблемой сравнения строки, объясните пожалуйста как правильно сравнить строки на етом примере ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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