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

перегрузка опрератора << - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ вывод четных чисел строки http://www.cyberforum.ru/cpp-beginners/thread270244.html
так как с++ не сильна написала сначала на паскале,потом в си++ каким то образом перетащила теперь в проге где цикл while выдает ошибку Е2227?о чем это ошибка? и еще не читает copy?как надо правильно copy писать в си++. вот полностью задание. Дана строка символов, состоящая из произвольных десятичных цифр, разделенных пробелами. Вывести четные числа этой строки void __fastcall...
C++ Класс шаблон Используя классы шаблоны и функциональные объекты описать класс телефонная книга http://www.cyberforum.ru/cpp-beginners/thread270242.html
Не работает ReadFile() при подключении своей библиотеки C++
Вот исходник: файл My_Dll.h // My_Dll.h /* #ifndef MYLIBAPI #define MYLIBAPI __declspec(dllimport)
C++ Стек. Баланс скобочек. Поправьте код пожалуйста
Доброго времени суток, уважаемые форумчане. Поставили мне тут задачу...решить задачу, к сроку, да не себе. И вот дедлайн поджимает, а дело яснее не становится. Задача на стек. Итак, задача. Дан текст, вводится в строку. В нем есть скобочки, (), {}, , надо проверить правильность расстановки скобок и выполнение правил вложенности. Казалось бы, все легко, готовых решений масса. Увы, задача...
C++ Функции-шаблоны http://www.cyberforum.ru/cpp-beginners/thread270198.html
как с помощью шаблон-функций подсчитать сумму элементов, расположенных на побочной диагонали?
C++ Перебор списка Всем привет. Задача: Перебрать все элементы списка(линейный однонаправленный), так что бы поучаствовали все элементы, но не было повторов элементов. Пример: 12345 и 54321 не подходят. К примеру с четырьмя элементами: 1234 123 124 143 423 12 подробнее

Показать сообщение отдельно
v0l0d1ka
9 / 9 / 0
Регистрация: 14.12.2010
Сообщений: 127
10.04.2011, 14:56  [ТС]     перегрузка опрератора <<
Вот подобная проблема случилась вновь: в нижеприведенном коде не выводятся на экран объекты из массива.
stone_wt.h
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
#ifndef _STONEWT_H_
#define _STONEWT_H_
#include <iostream>
using namespace std;
class Stonewt{
private:
    enum{Lbs_per_stn = 14};
    int stone;
    double pds_left;
    double pounds;
    char mode;
public:
    
    Stonewt(double lbs, char mode = 'p');
    Stonewt(int stn, double lbs = 0.0, char mode = 's');
    Stonewt();
    ~Stonewt();
    void show_mode() const;
    void set_mode(char m);
    friend ostream& operator<<( ostream& os, const Stonewt& ob);
    friend bool operator<=(const Stonewt& ob1, const Stonewt& ob2);
    Stonewt Stonewt::operator+(const Stonewt& ob);
    Stonewt Stonewt::operator-(const Stonewt& ob);
    //заполнить
};
#endif
stone_wt.cpp
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
89
90
#include <iostream>
#include "stone_wt.h"
using namespace std;
Stonewt::Stonewt(double lbs, char mode)
{
    if ( mode == 'p')
    {
        stone = int(lbs) / Lbs_per_stn;
        pds_left = int(lbs) % Lbs_per_stn + lbs - int(lbs);
        pounds = lbs;
    }
    else
        cout << "Invalid 2nd argument.\n";
    
}
     
Stonewt::Stonewt(int stn, double lbs, char mode)
{
    if ( mode == 's')
    {
        stone = stn;
        pds_left = lbs;
        pounds = stn * Lbs_per_stn + lbs;
    }
    else
          cout << "Invalid 3rd argument.\n";
}
 
 
Stonewt::Stonewt()
{
    stone = pounds = pds_left = 0;
    mode = 'p';
}
 
Stonewt::~Stonewt()
{
}
 
void Stonewt::set_mode(char m)
{
    if (m == 'p' || m == 's')
        mode = m;
    else
        cout << "Invalid argument.\n";
}
void Stonewt::show_mode() const{
    cout << " mode = " << mode << "\n";
}
 
 
ostream& operator<<(ostream& os, const Stonewt& ob) 
{
    if (ob.mode == 'p')
        os << ob.pounds << " pounds, ";
    else if (ob.mode == 's')
        os << ob.stone << " stone, " << ob.pds_left << " pounds,";
    return os;
}
Stonewt Stonewt::operator +(const Stonewt& ob)
{
    Stonewt result;
    double total_lbs1, total_lbs2;
    total_lbs1 = stone * Lbs_per_stn + pounds + pds_left;
    total_lbs2 = ob.stone * Lbs_per_stn + ob.pounds + ob.pds_left;
    result.pounds = total_lbs1 + total_lbs2;
    result.stone = (int)result.pounds / Lbs_per_stn;
    result.pds_left = (int)result.pounds % Lbs_per_stn + result.pounds - (int)result.pounds;
    return result;
}
 
Stonewt Stonewt::operator-(const Stonewt& ob)
{
    Stonewt result;
    double total_lbs1, total_lbs2;
    total_lbs1 = stone * Lbs_per_stn + pounds + pds_left;
    total_lbs2 = ob.stone * Lbs_per_stn + ob.pounds + ob.pds_left;
    result.pounds = total_lbs1 - total_lbs2;
    result.stone = (int)result.pounds / Lbs_per_stn;
    result.pds_left = (int)result.pounds % Lbs_per_stn + result.pounds - (int)result.pounds;
    return result;
}
 
bool operator<=(const Stonewt& ob1, const Stonewt& ob2)
{
    if (ob1.stone <= ob2.stone)
        return true;
    else
        return false;
}
main.cpp
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
#include <iostream>
using namespace std;
#include <cstdlib>
#include "stone_wt.h"
 
int main()
{
    
    Stonewt ar[6] = {
             (12.3, 'p'),
             (4, 2.4, 's'),
             (5, 7.8, 's')
    };
    char mode;
    double lbs;
    int stn;
    
    for (int i = 3; i < 6; i++)
    {
        
        cout << "Enter mode('p' or 's'):";
        cin >> mode;
        if (mode == 'p')
        {
            cout << "Enter pounds: ";
            cin >> lbs;
            Stonewt temp(lbs, mode);
            ar[i] = temp;
        }
        else if (mode == 's')
        {
            cout << "enter stones, pounds: ";
            cin >> stn;
            cin >> lbs;
            Stonewt temp(stn, lbs, mode);
            ar[i] = temp;
        }
    }
    Stonewt max = ar[0];
    for (int i = 0; i < 6; i++)
        if (max <= ar[i])
            max = ar[i];
    cout << "Max = " << max << "\n";
 
    Stonewt tmp(11);
    for (int i = 0; i < 6; i++)
        if (tmp <= ar[i])
            cout << "More than 11 stone: " << ar[i] << "\n"; 
 
    system("pause");
    return 0;
}
 
Текущее время: 13:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru