执行同时使用按引用传递和按值传递参数的程序时出现问题
Trouble executing program that uses both pass by reference and pass by value parameter
当我尝试执行以下程序时,我不断收到错误,我不知道我的一个函数是否有问题或什么(我编写它的方式)。我知道我的代码中的第 129 行有问题,但是每当我尝试进行更改时,都会出现其他语法错误。基本上我的语法有问题,因为我正在学习调试,所以我很难解决这个问题。
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
//declare global functions
void num_units( int& input1 );
void student_fees( float& num1, int& var1 );
void state_resident( bool& cond1 );
char parking_decal( char& ans1 );
void other_student_services_fees( char& ans2, char& ans3 );
int main ()
{
bool not_a_resident = false;
char want_as_sticker = 'x', want_parking_decal = 'y', want_id_card = 'z';
string semester_session = "not enrolled yet";
int units = 0, semester = 0;
float price_per_unit = 0, unit_fees = 0, student_services_fee = 0, parking_decal_fee = 0, total_fees = 0, as_sticker_fee = 19.50, id_card_fee = 13.00;
num_units( units );
student_fees( student_services_fee, semester );
state_resident( not_a_resident );
parking_decal( want_parking_decal );
other_student_services_fees( want_as_sticker, want_id_card );
//determine total student services fee depending on user's preferences
if ( want_as_sticker == 'n' )
student_services_fee = student_services_fee - as_sticker_fee;
if ( want_parking_decal == 'n' )
student_services_fee = student_services_fee - parking_decal_fee;
if ( want_id_card == 'n' )
student_services_fee = student_services_fee - id_card_fee;
//determine price per unit
if ( not_a_resident == false )
price_per_unit = 325.00;
else
price_per_unit = 46.00;
//determine unit_fees
unit_fees = price_per_unit * units;
//determine parking decal price
if ( ( parking_decal( want_parking_decal ) == 'y' ) && ( (semester == 1) || (semester == 3) ))
parking_decal_fee = 45.00;
else
parking_decal_fee = 85.00;
//calculate total fees
total_fees = unit_fees + student_services_fee;
if ( semester == 0 )
semester_session = "Fall";
else if ( semester == 1)
semester_session = "Winter";
else if ( semester == 2)
semester_session = "Spring";
else
semester_session = "Summer";
cout << "For " << semester_session + " " << "your total fees are $ " << total_fees;
return 0;
}
void num_units( int& input1 )
{
cout << "SMC Fee Calculator" << endl;
cout << "Enter number of units enrolled: ";
cin >> input1;
cout << endl;
}
//calculates the unit fees
void student_fees( float& num1, int& var1 )
{
do
{
//determines semester unit price
cout << "Is this Fall[0], Winter[1], Spring[2] or Summer[3] session: ";
cin >> var1;
if ( var1 == 0 || var1 == 2 )
num1 = 50.50;
else if ( semester == 1 || semester == 3 )
num1 = 48.50;
else
cout << endl;
cout << "I'm sorry. That's an improper selection. Please try again.n";
}while ( var1 <= 4 && var1 >= 0 );
}
void state_resident( bool& cond1 )
{
cout << "Are you a state resident[0] or not[1]: ";
cin >> cond1;
cout << endl;
}
char parking_decal( char& ans1 )
{
do
{
cout << "Want a parking decal? [y/n]: ";
cin >> ans1;
if ( (ans1 != 'y') || (ans1 != 'n') )
cout << "I'm sorry. That's not a valid input. Please try again.n";
else
break;
}while ( (ans1 != 'y') || (ans1 != 'n') );
cout << endl;
return ans1;
}
void other_studentservices_fees( char& ans2, char& ans3 )
{
//Ask if user wants an AS sticker.
do
{
cout << "Want an AS sticker? [y/n]: ";
cin >> ans2;
//proof answer
if ( (ans2 != 'y') || (ans2 != 'n') )
cout << "I'm sorry. That's not a valid input. Please try again.n";
else
break;
}
cout << endl;
//Ask if user wants an AS sticker.
do
{
cout << endl << "Want an ID card? [y/n]: ";
cin >>ans3;
//proof answer
if ( (ans2 != 'y') || (ans2 != 'n') )
cout << "I'm sorry. That's not a valid input. Please try again.n";
else
break;
}
cout << endl;
}
输出应如下所示:
SMC Fee Calculator
Enter number of units enrolled: 18
Is this Fall[0], Winter[1], Spring[2] or Summer[3] session: 0
Are you a state resident[0] or not[1]: 0
Want a parking decal? [y/n]: n
Want an AS sticker? [y/n]: n
Want an ID card? [y/n]: n
For Fall semester, your total fees are $ 846.00
SMC Fee Calculator
Enter number of units enrolled: 6
Is this Fall[0], Winter[1], Spring[2] or Summer[3] session: 1
Are you a state resident[0] or not[1]: 1
Want a parking decal? [y/n]: y
Want an AS sticker? [y/n]: y
Want an ID card? [y/n]: y
For Winter semester, your total fees are $ 2043.50
我已经看了你的程序 5 分钟,有很多错误,我什至不确定从哪里开始......
- 第 131 行和第 145 行:您忘记了 do-while 条件。
- 第 141 行:应该将"answers2"替换为"answers3"(顺便说一下,变量的糟糕名称)
- 第89行:学期是未声明的,似乎你应该使用"var1"代替,这是另一个可怕的名字。
- 第 12 行:您声明函数 "other_student_services_fees" 但从未定义它
那时我就放弃了你。我们不是来为你做功课的,这些是你可能自己发现的基本错误。
相关文章:
- C++程序问题:抛出'std::invalid_argument'实例后终止调用
- 测试外壳,插入和快速的程序问题
- Mongodb c ++驱动程序问题
- 输出中的特定递归反向程序问题
- C++ std::endl 的多线程程序 I/O 问题
- 我如何利用核心文件在C/C 中找到应用程序问题
- 套接字 TCP 服务器程序问题
- C++,结构数据库程序问题
- visual c++程序问题
- C++多个程序问题(rand、转换、崩溃)
- 非常基本的C++程序问题 - 二进制表达式的操作数无效
- C++练习车辆程序问题 - 初学者编程
- 关于堆和堆栈应用程序问题
- Boost asio:io服务在销毁步骤中被阻止了更多的处理程序问题
- 使用链接linux编译GLFW应用程序问题
- C++计算器程序.问题
- 基于WIndows - manifest的ETW提供程序问题
- 求1到100之间质数的程序问题
- 文件加载程序问题
- mfcc++托盘应用程序问题