0

我正在自己完成一本 O'reilly 教科书,现在正在上课。这是逐字复制的编程练习:

“练习 13-1:编写一个奇偶校验类。该类提供了一个名为 put 的成员函数,它计算提供的元素的数量。如果调用了偶数个 put,则另一个成员函数 test 返回 true,否则返回 false。成员函数: void parity::put( );//计数另一个元素 bool parity::test( );//true如果已完成偶数个放置,则返回。返回false奇数。

我相信我对我的程序有正确的想法。我完成了它,它没有错误,但它不能正常工作并且有一个断点。这是我的代码:

#include <iostream>
#include <cstdlib>
class parity {

    private:
        int count; //number of puts done.

    public:
        void init();//initialize the put
        void put(const int item); //count another element
        bool test( ); //return true of even number of puts have been done. Return false for an odd number
};

inline void parity::init()
{
    count = 0;
}

inline void parity::put(const int item)
{
    count = item;
    ++count;
}

inline bool parity::test()
{
    if (count % 2 == 0)
    {
        return true;
        std::cout << "Amount of puts is even";
    }
    else
    {
        return false;
        std::cout << "Amount of puts is not even";
    }
}

int main ()
{
    parity a_parity;

    a_parity.init();

    a_parity.put(1);
    a_parity.put(2);
    a_parity.put(3);

    a_parity.test();

    return 0;
}

我相信错误出在我的parity::put成员函数中,但我不知道。任何建议将不胜感激。谢谢

4

1 回答 1

2

count = item;就是问题所在。

inline void parity::put(const int item)
{
    // count = item; 
    ++count;
}

count应该可以工作,因为您每次调用时都不会重置put.

于 2013-06-01T04:42:14.920 回答