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

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

Восстановить пароль Регистрация
 
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
13.12.2012, 16:00     Оператор сравнения #1
Надо написать программу, которая переводит фунты в стоуны, используя класс. Класс содержит перегруженные операторы мат. операций (сложение, вычитание и умножение). Также прога должна создать массив объектов класса размером в 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++
C++ Не получается перегрузить оператор сравнения
Символы сравнения C++
C++ сделать сравнения
Переменный оператор сравнения C++
C++ В Delphi есть оператор cost i of. и т.д. Есть ли в C++ такой же оператор?
C++ Является ли тернарный оператор оператором сравнения?
C++ Компилятор путает знаки шаблона и оператор сравнения

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

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

Текущее время: 02:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru