0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
1

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

11.12.2012, 21:19. Показов 350. Ответов 0
Метки нет (Все метки)

Ребят, у меня задание. Написать программу, которая будет обладать классом для перевода фунтов стоуны, который будет иметь функции перегруженных операторов сложения, вычитания и умножения, а также вывода информации на экран в двух режимах. Вот код:
Сам класс:
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;
}
Прога выбивает ошибку и жалуется на использование операции остатка от деления. Че за фигня? и что самое странное, я использую эту операцию три раза, а она жалуется только два как это исправить вообще? и у меня кстати какая-то проблема с функцией перегрузки оператора умножения, так как она тоже не работает. Но на данный момент это не так важно, и меня волнует именно то, что прога не работает вообще Помогите, люди добрые!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2012, 21:19
Ответы с готовыми решениями:

С помощью операций деления нацело и взятия остатка от деления определить, имеется ли в записи числа N цифра 2
//Дано целое число N(&gt; 0).С помощью операций деления нацело и взятия остатка от деления определить,...

Используя операции деления нацело и взятия остатка от деления, определить, имеется ли в записи числа цифра k
Полное условие: Дано натуральное число n. Используя операции деления нацело и взятия остатка от...

Дано целое число N(>0).используя операции деления нацело и взятия остатка от деления, найти количество и сумму его цифр
Дано целое число N(&gt;0).используя операции деления нацело и взятия остатка от деления, найти ...

Используя одну операцию деления нацело и одну операция взятия остатка от деления найти цифру. соответствующую разряду ты
Дано целое число, большое 999. Используя одну операцию деления нацело и одну операция взятия...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2012, 21:19
Помогаю со студенческими работами здесь

Как определить, делится ли число на «3» без остатка, не используя деления и определения остатка от деления
Написать подпрограмму, которая определяет, делится ли число на «3» без остатка, не используя...

Операцией деления нацело и взятия остатка от деления определить есть ли в числе цифра 0
Дано целое число N (&gt; 0).С помощью операцией деления нацело и взятия остатка от деления определить,...

Используя операции деления нацело и взятия остатка от деления, вывести все цифры числа
Дано целое число N (&gt; 0). Используя операции деления нацело и взятия остатка от деления, вывести...

Используя операции деления нацело и взятия остатка от деления, вывести все цифры числа
Дано целое число N (&gt; 0). Используя операции деления нацело и взятия остатка от деления, вывести...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru