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

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

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

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

11.12.2012, 21:19. Просмотров 216. Ответов 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;
}
Прога выбивает ошибку и жалуется на использование операции остатка от деления. Че за фигня? и что самое странное, я использую эту операцию три раза, а она жалуется только два как это исправить вообще? и у меня кстати какая-то проблема с функцией перегрузки оператора умножения, так как она тоже не работает. Но на данный момент это не так важно, и меня волнует именно то, что прога не работает вообще Помогите, люди добрые!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2012, 21:19     Использование остатка от деления Оо
Посмотрите здесь:

Вернуть число из остатка от деления - C++
Здравствуйте, уважаемые программисты и просто любители :) И вновь обращаюсь я за вашей помощью... В языке С++ есть оператор &quot;%&quot;, с...

Битовые операции. Сдвиг вправо и взятие остатка от деления - C++
Есть задача: определить количество ноликов в веденном пользователем числе с помощью битовых операций. Вот что у меня уже есть: ...

Определить результат целочисленного деления a на b, не используя стандартные операции вычисления остатка - C++
Не совсем понимаю условие. Как решить? Даны целые числа a,b(a&gt;b). Определить результат целочисленного деления a на b, не используя...

Разработать функцию, возвращающую сумму остатка от деления первого и второго аргументов на заданное число - C++
Разработать функцию типа int, что возвращает сумму остатка от деления первого и второго аргументов на 5, если сумма больше 20, иначе...

Найти остаток от деления целой части выражения sin(a+b)0.5c на 4 и вывести на экран сообщение о величине остатка. - C++
12. Найти остаток от деления целой части выражения sin(a+b)0.5c на 4 и вывести на экран сообщение о величине остатка. Если остаток равен 0,...

Остаток от деления без использование оператора % - C++
Как показать что остаток от деления равен 0, БЕЗ использования оператора % ???

Вычисление остатка - C++
Здравствуйте! Есть очень большое произведение(100*101*102*...*100000) Нужно вычислить остаток этого произведения при делении на 23, как...

Вычисление частного и остатка - C++
Написать программу вычисления частного и остатка от деления двух целых чисел. При выводе результата на экран установить ширину поля 11...

Шаблонная функция вычисления остатка - C++
Здравствуйте дорогие обитатели форума, можете пожалуйста помочь с задачей: Функция вычисления остатка каждого элемента при делении на...

Нужно разобраться в выделении остатка - C++
Народ здравствуйте короче я написал программу которая проверяет четность или нечетность целого числа #include &quot;std_lib_facilities.h&quot; ...


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

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

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