在 c++ 中对每个函数使用相同的输入
Using same inputs for each function in c++
好的,所以我做了一个小程序,它要求用户输入,然后加减等。但不知何故,它不起作用。它必须为每个函数使用 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);
这会保留 x
和 y
的内容不变,并为您提供一个新对象 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
类的实例进行操作,因此,它们作为这样的自由函数工作得更好。
相关文章:
- 通过 ssh 发送参数.是否有非阻塞输入函数?
- 将int输入函数,将int输入开关,然后更改int的值
- 不能将类中的输入函数与带参数的函数分开
- "cin.get"停止了另一个输入函数,如"cin"..C++
- 模板函数中的错误以获取来自C 输入函数的参数类型
- 两个输入函数的 T(n) 运行时
- 指针在输入函数时丢失值
- (C++)对文件输入函数的递归调用
- 在 Linux 上使用 C 中的输入函数,无需按回车键
- 我在输入函数上做错了什么
- 简单的c++输入函数
- 如何确定未格式化输入函数读取的字符数
- 当我超过第一个 getline() 的输入中的数组大小时,第二个 getline 或其他输入函数不起作用
- 将文件读取到向量中,我的输入函数有什么问题?
- Pthread_create似乎清空了传递给输入函数的参数
- 将具有可变参数的输入函数转换为成员函数
- 直接输入函数
- 如何:捕获输入函数异常的可变包装函数
- 返回命令输入函数
- 是否可以在if语句中使用_getch()或cin或任何输入函数?