c++的do while不断重复
C++ do while keeps repeating
#include <iostream>
#include <string>
#include <cctype>
#include <sstream>
using namespace std;
int getTreeNo(int);
int getSpeciesCode(int);
float getDbh(float);
int getTotHt(int);
int getTotHt(int);
double calcTotVol(double[], double[], float, int);
int main() {
int i = 0;
int treeNo = 0;
int speciesCode = 0;
string speciesDesc[6] = {};
float dbh = 0.00;
int totalHt = 0;
double totalVol = 0.00;
int Species[6] = {};
double b0[6] = {};
double b1[6] = {};
int noTrees = 0;
treeNo = getTreeNo(treeNo);
/* Gets number of trees for calculations*/
speciesCode = getSpeciesCode(speciesCode);
/* Get Species code from user*/
dbh = getDbh(dbh);
/* get DBH from user*/
totalHt = getTotHt(totalHt);
/*Gets tree height from user*/
totalVol = calcTotVol(b0, b1, dbh, totalHt);
/* Calculates values */
/* All constants and variables
int treeNo;
int speciesCode;
string speciesDesc[6];
float dbh;
int totalHt;
double totalVol;
int Species[6];
double b0[6];
double b1[6];
int noTrees;
double avgTotVol;
*/
if (speciesCode = 11) {
speciesDesc[0] = "Loblolly Pine";
} else if (speciesCode = 12) {
speciesDesc[1] = "White Pine";
} else if (speciesCode = 13) {
speciesDesc[2] = "Red Pine";
} else if (speciesCode = 21) {
speciesDesc[3] = "White Oak";
} else if (speciesCode = 22) {
speciesDesc[4] = "Red Oak";
} else if (speciesCode = 23) {
speciesDesc[5] = "Other Oak";
}
Species[0] = 11;
Species[1] = 12;
Species[2] = 13;
Species[3] = 21;
Species[4] = 22;
Species[5] = 23;
if (speciesCode = 11) {
b0[0] = 1.2446;
} else if (speciesCode = 12) {
b0[1] = 0.000;
} else if (speciesCode = 13) {
b0[2] = 2.0822;
} else if (speciesCode = 21) {
b0[3] = .7316;
} else if (speciesCode = 22) {
b0[4] = 1.6378;
} else if (speciesCode = 23) {
b0[5] = .7554;
}
if (speciesCode = 11) {
b1[0] = .002165;
} else if (speciesCode = 12) {
b1[1] = .002364;
} else if (speciesCode = 13) {
b1[2] = .002046;
} else if (speciesCode = 21) {
b1[3] = .001951;
} else if (speciesCode = 22) {
b1[4] = .002032;
} else if (speciesCode = 23) {
b1[5] = .002174;
}
totalVol = b0[6] + b1[6] * pow(dbh, 2) * totalHt;
for (i = 0; i < treeNo; i++) {
cout << "Tree Number " << i + 1 << ": " << speciesCode << dbh << totalHt
<< speciesDesc[6] << b0[6] << b1[6] << totalVol;
}
}
/************************************************************************************************
* *************/
int getTreeNo(int treeNo) {
do {
cout << "Please enter the number of trees :" << endl;
cin >> treeNo;
if ((treeNo <= 0) || (treeNo > 999)) {
cout << "ERROR!!!,You cannot have more then999 entries" << endl;
}
} while ((treeNo <= 0) || (treeNo > 999));
return treeNo;
}
int getSpeciesCode(int speciesCode) {
do {
cout << "Please enter your Species Code";
cin >> speciesCode;
} while ((speciesCode != 11) || (speciesCode != 12) ||
(speciesCode != 13) || (speciesCode != 21) ||
(speciesCode != 22) || (speciesCode != 23));
cout << "ERROR!!!,That information does not exist wthin our system" << endl;
return speciesCode;
}
float getDbh(float dbh) {
do {
cout << "Please enter the DBH of the tree, The DBH must be greter then "
"and equal to five and less then 50.6" << endl;
cin >> dbh;
if ((dbh < 5) || (dbh > 50.6)) {
cout << "ERROR!!!, The DBH must be greter then and equal to five "
"and less then 50.6" << endl;
}
} while ((dbh < 5) || (dbh > 50.6));
return dbh;
}
int getTotHt(int totalHt) {
do {
cout << "Please enter the height of the tree" << endl;
cin >> totalHt;
if ((totalHt < 24) || (totalHt > 160)) {
cout << "ERROR!!!, Please enter a height thats not larger then "
"160, but greater then 24" << endl;
}
} while (totalHt < 24 || totalHt > 160);
{ return totalHt; }
}
double calcTotVol(double array[], double array1[], float dbh, int totalHt) {
double totalVol;
totalVol = array[6] + array1[6] * pow(dbh, 2) * totalHt;
return totalVol;
}
谁能帮助我我的speciesCode函数一直循环,不会接受我的输入,实际上我不相信任何函数正在接受它,我已经工作了几个小时,试图找出原因,我卡住了
感谢您的帮助
while语句中的条件永远不会为假,循环也永远不会退出。为了使其为假,speciesCode
必须同时具有1个以上的值。
while((speciesCode != 11) || (speciesCode != 12) || (speciesCode != 13) || ...)
您可能想要一直重复直到得到有效代码。在这种情况下,使用&&
while((speciesCode != 11) && (speciesCode != 12) && (speciesCode != 13) && ...)
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 即使没有满足他们的条件,我也无法通过一些 do-while 循环
- 如何使用 do while 循环确定最高值和最低值
- do while 循环中的 if 语句以 yes 或 no 结尾
- 在 C 或 C++ 中,循环可以同时具有 "do" 和"while"部分吗?
- 使用 while 或 do while 退出循环
- 带有开关语句的 do-while 循环 -- 无穷循环错误
- 为什么当我输入一个被接受的数字时,我的 do-while 循环没有中断?
- 为什么我的 Do-while 循环无法在C++中运行菜单
- 如果语句不会在 do - while 循环中运行
- 如何在c++中读取do-while循环中的空白
- 什么是'do while loop'的真实应用?
- 将嵌套的 for 循环更改为 do-while 循环
- 如何修复不会在退出选择时终止的 do-while 循环
- 为什么这个do-while循环每隔一个循环只写入数组?
- C++ do/while 循环和 if/else: 骰子游戏 -- 第 75 行错误:"Cout"之前的预期"While" -- 如何解决这个问题?
- 为菜单创建基本的用户输入验证(使用基本的 while/do-while 等循环)
- 使用 while / do-while 循环进行数组元素设置
- 为什么 for/while/do-while 在执行相同的任务时被放置在 c/c++ 中