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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дано 2-ух-значное число. Сделать так, чтоб программа преобразовала это число в новое число кол-во десятков http://www.cyberforum.ru/cpp-beginners/thread728113.html
Тоесть, для примера, мы вводим число 23, а программа выводит нам 32 (числа наоборот).
C++ структуры (Вывести информацию о самой молодой команде) Информация об участниках спортивных соревнований содержит наименование страны, название команды, ФИО игрока, игровой номер, возраст, рост и вес. Вывести информацию о самой молодой команде. Visual studio http://www.cyberforum.ru/cpp-beginners/thread728107.html
C++ Дано n чисел, найти наибольшее положительное. (С++)
Задача, связана с циклами.
Выделить подстроку, которая соответствует записи вещественного числа с фиксированной точкой C++
Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков + и -. Выделить подстроку, которая соответствует записи вещественного числа с фиксированной точкойй. VIsual studio
C++ Подсчет количества файлов http://www.cyberforum.ru/cpp-beginners/thread728100.html
Составить программу, которая посчитает количество файлов и выведет их список на экран в папке, где она лежит, и всех подпапках. google поиск: 1. рекурсии. 2 работа с файловой системой. 3 winAPI.
C++ Даны длины сторон треугольника, определить тип этого треугольника Даны длины сторон треугольника, определить тип этого треугольника подробнее

Показать сообщение отдельно
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100

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

11.12.2012, 21:19. Просмотров 214. Ответов 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;
}
Прога выбивает ошибку и жалуется на использование операции остатка от деления. Че за фигня? и что самое странное, я использую эту операцию три раза, а она жалуется только два как это исправить вообще? и у меня кстати какая-то проблема с функцией перегрузки оператора умножения, так как она тоже не работает. Но на данный момент это не так важно, и меня волнует именно то, что прога не работает вообще Помогите, люди добрые!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru