我的问题是如何检查本科生的学生编号是否以数字5开头,而毕业生的学生编号是否以9开头。
条件如下: 对于本科生,初始注册费为R500,对于研究生,初始注册费为R600。对于本科课程,费用为每个模块R1100,研究生课程费用为每个模块R2000。
我已经设置了我的类和我的主要外观如下,但我不确定在主要或我的实现文件中应该在哪里进行条件检查?
//Application
#include "Student.h"
#include "PostGradStudent.h"
#include <iostream>
using namespace std;
int main()
{
double regFee, modFee, addFee;
PostGradStudent thePostGradStudent(1, 2, 3, 54321012, "Rohan", 2, "Hole-In-One avenue", "BSc", "Thesis");
thePostGradStudent.displayInfo();
return 0;
}
以下是我进行计算的地方,但这里我不明白如何将正确的值发送给main?
double PostGradStudent::calcFee() //calculate the total fees(registration fee + module fees + any additional fee) for a student
{
return regFee + modFee + addFee;
}
void PostGradStudent::displayInfo()
{
cout.setf(ios::showpoint);
cout.setf(ios::fixed);
cout << "Details for the student" << endl
<< "Student Number: " << get_studentNumber() << endl
<< "Student Name: " << get_studentName() << endl
<< "Number of Modules: " << get_noModules() << endl
<< "Address: " << get_address() << endl
<< "Degree: " << get_degree() << endl
<< "Total cost of fees: R" << setprecision(2) << calcFee() << endl
<< "Dissertation: " << get_dissertation() << endl;
}
我在运行以下应用程序时附上了截图: Output
非常感谢这方面的协助。
谢谢 罗汉
答案 0 :(得分:0)
如果n
是您的号码并且是一个整数类型,那么
while (n < -9 || n > 9) n /= 10;
将n
转换为第一个数字。如果您不支持n < -9 ||
signed
,请删除n
部分。
这也具有0
不变的整洁属性。
以数字方式执行此操作比转换为std::string
要快,但如果您基本上使用字符串(在我看来,至少学生编号不是您想要执行算术运算的东西),然后使用substr
&amp; c。
答案 1 :(得分:0)
有了数字,您可以使用std::to_string函数将其转换为字符串。如果您使用的是不支持C ++ 11的编译器,请尝试查看itoa函数。
转换完成后,只需使用string
运算符检查指定的char[]
或[]
项即可。
由于@ muXXmit2X表示std::ostringstream
也可用于转换。
实际的解决方案选择取决于您的要求的详细信息。
示例实施:
// check if the 'value' has digit '2' set in the hundreds pos
// assumption: there are at least 3 digits
uint32_t value = 21245;
char check = '2';
// substr
std::string text = std::to_string(value);
bool isTrue1 = text.substr(text.size()-3, 1) == std::string(1, check); // true
bool isTrue2 = text[text.size()-3] == check; // true
// itoa
char buffer[10];
itoa(value, buffer, 10);
bool isTrue3 = buffer[strlen(buffer)-3] == check; // true
// numerical
bool isTrue4 = (value / 100 % 10) == 2; // true