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

Использование остатка от деления Оо - C++

Восстановить пароль Регистрация
 
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
11.12.2012, 21:19     Использование остатка от деления Оо #1
Ребят, у меня задание. Написать программу, которая будет обладать классом для перевода фунтов стоуны, который будет иметь функции перегруженных операторов сложения, вычитания и умножения, а также вывода информации на экран в двух режимах. Вот код:
Сам класс:
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
#ifndef _STONEWT_H_
#define _STONEWT_H_
class Stonewt
{
private:
    enum    {Lbs_per_stn=14};
    int stone;
    double pds_left;
    double pounds;
    char mode;
public:
    Stonewt(double lbs,char form='p');
    Stonewt(int stn,double lbs,char form='p');
    Stonewt();
    ~Stonewt();
    void pounds_mode();
    void stone_mode();
    operator int() const;
    operator double() const;
    Stonewt operator+(const Stonewt &st) const;
    Stonewt operator-(const Stonewt &st) const;
    Stonewt operator*(double n) 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
#include <iostream>
using namespace std;
#include "Stonewt.h"
Stonewt::Stonewt(double lbs,char form)
{
    stone=int(lbs)/Lbs_per_stn;
    pds_left=int(lbs)%Lbs_per_stn+lbs-int(lbs);
    pounds=lbs;
}
Stonewt::Stonewt(int stn, double lbs,char form)
{
    stone=stn;
    pds_left=lbs;
    pounds=stn*Lbs_per_stn+lbs;
}
Stonewt::Stonewt()
{
    stone=0;
    pounds=0;
    pds_left=0;
}
Stonewt::~Stonewt()
{
}
void Stonewt::pounds_mode()
{
    mode='p';
}
void Stonewt::stone_mode()
{
    mode='s';
}
Stonewt::operator int() const
{
    return int(pounds+0.5);
}
Stonewt::operator double() const
{
    return pounds;
}
Stonewt Stonewt::operator+(const Stonewt &st) const
{
    Stonewt sum;
    sum.pounds=pounds+sum.pounds;
    sum.stone=stone+st.stone+sum.pounds/Lbs_per_stn;
    sum.pounds%=Lbs_per_stn;
}
Stonewt Stonewt::operator -(const Stonewt &st) const
{
    Stonewt diff;
    int tot1,tot2;
    tot1=pounds+stone*Lbs_per_stn;
    tot2=st.pounds+st.stone*Lbs_per_stn;
    diff.pounds=(tot1-tot2)%Lbs_per_stn;
    diff.stone=(tot1-tot2)/Lbs_per_stn;
    return diff;
}
Stonewt Stonewt::operator *(double n) const
{
    Stonewt multip;
    double totalpounds=stone*Lbs_per_stn*n+pounds*n;
    multip.stone=totalpounds/Lbs_per_stn;
    multip.pounds=totalpounds%Lbs_per_stn;
    return multip;
}
ostream & operator <<(ostream & os,const Stonewt &t)
{
    if(t.mode=='s')
        os<<t.stone<<" stones, "<<t.pounds<<" pounds.\n";
    else if(t.mode=='p')
        os<<t.pounds<<" pounds.\n";
    return os;
}
И небольшая программка для тестирования возможностей класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
#include "Stonewt.h"
int main()
{
    Stonewt jackie=Stonewt(250.6);
    Stonewt dave=Stonewt(13,5,'s');
    cout<<jackie;
    jackie.stone_mode();
    cout<<jackie;
    jackie.pounds_mode();
    Stonewt catie;
    cout<<catie;
    catie=jackie-dave;
    cout<<catie;
    catie=jackie+dave;
    cout<<catie;
    system("pause");
    return 0;
}
Прога выбивает ошибку и жалуется на использование операции остатка от деления. Че за фигня? и что самое странное, я использую эту операцию три раза, а она жалуется только два как это исправить вообще? и у меня кстати какая-то проблема с функцией перегрузки оператора умножения, так как она тоже не работает. Но на данный момент это не так важно, и меня волнует именно то, что прога не работает вообще Помогите, люди добрые!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2012, 21:19     Использование остатка от деления Оо
Посмотрите здесь:

C++ Дано целое число N(>0).используя операции деления нацело и взятия остатка от деления, найти количество и сумму его цифр
Определить результат целочисленного деления a на b, не используя стандартные операции вычисления остатка C++
C++ C++ функция деления нацело без остатка
C++ Нахождение остатка от деления любых дробных чисел
Битовые операции. Сдвиг вправо и взятие остатка от деления C++
Найти остаток от деления целой части выражения sin(a+b)0.5c на 4 и вывести на экран сообщение о величине остатка. C++
Используя одну операцию деления нацело и одну операция взятия остатка от деления найти цифру. соответствующую разряду ты C++
C++ Rand(), приоритет умножения и остатка от деления

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

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

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