在 c++ 中对每个函数使用相同的输入

Using same inputs for each function in c++

本文关键字:输入 函数 c++      更新时间:2023-10-16

好的,所以我做了一个小程序,它要求用户输入,然后加减等。但不知何故,它不起作用。它必须为每个函数使用 x 和 y 输入,但似乎它使用以前的输出。

这是一个代码:

主要:

//  ========================================================================
//  NumberProject.cpp : Defines the entry point for the console application.
//  ========================================================================
//  ==================
   #include "stdafx.h"
   #include <iostream>
//  ==================
//  ================
//  Class Inclusions
//  ==================
   #include "Number.h"
//  ==================
//  ====================
    using namespace std;
//  ====================
    void Banner();
//  =============
    int main( ) {
//      ================================
//      Variable and Object Declarations
//      ============
        char answer;
        bool goAgain = true;
        int  integerValue;
        Number x;
        Number y;
        Banner();
//      =========
//      User loop
//      ===================
        while ( goAgain ) {
            cout << "Enter an integer:  ";
            cin >> integerValue;
            x.Set( integerValue );
            cout << "Enter an integer:  ";
            cin >> integerValue;
            y.Set( integerValue );
            cout << endl;
//          Addition
            x.Add( y );
            cout << "Addition: ";
            x.Output( );
//          Subtraction
            x.Subtract( y );
            cout << "Subtraction: ";
            x.Output( );
//          Multiplication
            x.Multiply( y );
            cout << "Multiplication: ";
            x.Output( );
//          Division
            x.Divide( y );
            cout << "Division: ";
            x.Output( );
//          ===========================
//          User loop termination code.
//          ====================================================
            cout << "Would you like go again continue? (y/n)" << endl;
            cin >> answer;
            if ( answer == 'n' )
                goAgain = false;
//          ====================
        } // while
//      ==========
        return 0;
    } // Function main( )
//  =====================
        void Banner() {
            cout << "====================================" << endl;
            cout << "   Welcome to the Number Project    " << endl;
            cout << "====================================" << endl;
            cout << endl;
        }
// ================================================================

数量.cpp:

//  ==================
   #include "StdAfx.h"
   #include "math.h"     // Needed for sqrt and pow.
   #include <string>
   #include <iostream>
//  ==================
//  ================
//  Class Inclusions
//  ==================
   #include "Number.h"
//  ==================
//  ====================
    using namespace std;
//  ====================
        Number::Number( void ) {
            number = 0;
        }
        Number::Number( int integerValue ) {
            number = integerValue;
        }
        Number::~Number( void ) {
        }
        int Number::Get( ) {
            return number;
        }
        void Number::Set( int integerValue ) {
            number = integerValue;
        }
        void Number::Output( ) {
            cout << number << endl;
            cout << endl;
        }

        void Number::Add( Number otherNumber ) {
            number = number + otherNumber.Get();
        }
        void Number::Subtract( Number otherNumber ) {
            number = number - otherNumber.Get();

        }
        void Number::Multiply( Number otherNumber ) {
            number = number * otherNumber.Get();
        }
        void Number::Divide( Number otherNumber ) {
            number = number / otherNumber.Get();
        }
    // =================================================

数字.h:

//  ===========
   #pragma once
//  ===========
//  ==============
    class Number {
        public:
//          ============
//          Constructors
//          ===============
            Number( void );
            Number( int );
//          ==============
//          ==========
//          Destructor
//          ===============
           ~Number( void );
            int  Number::Get( );       // Accessor
            void Number::Set( int );   // Mutator
            void Number::Output();
            void Number::Add( Number );
            void Number::Subtract( Number );
            void Number::Multiply( Number );
            void Number::Divide( Number );
//          ===========================
        private:
            int number;
    };

示例输出:

==================================== Welcome to the Number Project ===================================  
Enter an integer: 2 Enter an integer: 3 Addition: 5 Subtraction: 2 Multiplication: 6 Division: 2
Would you like go again continue? (y/n)

请帮忙?

当你这样做时

    void Number::Add( Number otherNumber ) {
        number = number + otherNumber.Get();
    }

通过调用 x.add(y),您实际上是在修改 x 的数字值。您有两种选择。就像 NHGRIF 建议的那样,你可以有单独的 addNumbers 函数,它不属于类,并按照他的建议做,或者你可以做一些类似的事情

    Number Number::Add( Number otherNumber ) {
        return Number( number + otherNumber.Get());
    }

并按照他建议使用 addNumbers 的相同方式使用它

你应该将数学函数移到类之外(但保留在.h.cpp文件中)。 我会告诉你添加应该是什么样子的,你应该能够弄清楚其余的。

Number addNumbers(Number a, Number b)
{
    return Number(a.Get()+b.Get());
}

然后,要调用 main,您将执行以下操作:

Number result;
result = addNumbers(x, y);

这会保留 xy 的内容不变,并为您提供一个新对象 result ,其中包含总和。 冲洗并重复其他数学函数。

为了澄清"将其移出类外",在您的.h中,您有以下内容:

class Number {
    //stuff
};

"//stuff"包括您的数学函数。 因此,请将.h更改为如下所示:

class Number {
    //stuff minus math functions
};
Number addNumbers(Number a, Number b);
Number subtractNumbers(Number a, Number b);
//etc.

从组织的角度来看,它们与Number类属于同一文件,因为它们将Number s作为参数并返回Number,但它们不对Number类的实例进行操作,因此,它们作为这样的自由函数工作得更好。