为何for循环内的if条件始终不成立?C++计算器程序调试求助
C++计算器循环条件问题
我刚学C++,掌握基础后想做小型项目练手。先写了个处理两个数的简易计算器,现在想升级成能让用户输入数值数量、从左到右依次运算的版本。
我用vector存储输入的数值,用for循环遍历,但为了避免循环计数器超出vector最后一个索引,加了个if语句来调整计算并终止循环。可这个if条件始终不成立,明明逻辑上应该触发。
我给if块里的打印文本加了##########标记,运行后发现完全没触发;把条件改成1==1时,if块能正常执行,循环也能按预期终止。我还在if块首行加了cout输出i和qty_numbers变量,确认变量在作用域内,所以问题肯定出在if条件本身。
以下是我的代码:
#include <iostream> #include <vector> int main() { //Declare variables int qty_numbers = 0; int case_operation; double result = 0; double input_numbers; std::cout << "Please enter the amount of numbers:\n"; std::cin >> qty_numbers; //Initialize a vector named numbers std::vector<double> numbers; std::cout << "Please enter the numbers:\n"; //Let the user enter the numbers which get stored into the vector numbers for (int i = 0; i < qty_numbers; i++) { std::cin >> input_numbers; numbers.push_back(input_numbers); } //Process the first two numbers entered if (result == 0) { std::cout << "Please select the arithmetic operation:\n"; std::cout << "1: Addition\n"; std::cout << "2: Subtraction\n"; std::cout << "3: Multiplication\n"; std::cout << "4: Division\n"; std::cout << "5: Exit program\n"; std::cin >> case_operation; switch (case_operation) { case 1: //Addition result = numbers[0] + numbers[1]; break; case 2: //Subtraction result = numbers[0] - numbers[1]; break; case 3: //Multiplication result = numbers[0] * numbers[1]; break; case 4: //Division result = numbers[0] / numbers[1]; break; case 5: //Exit program return 0; break; default: std::cout << "Error!\n"; break; } } //Loop to calculate the 3rd, 4th ... number with the result of the previous calculation (just left to right) for (int i = 1; i < qty_numbers; i++) { std::cout << i; std::cout << qty_numbers - 1; //If the index would go out of bounds calculate with the last index of the vector and end the loop if (i == qty_numbers - 1) { //Problem: The if condition is not correct and therefore this block is skipped. std::cout << "Please select the arithmetic ########## operation:\n"; std::cout << "1: Addition\n"; std::cout << "2: Subtraction\n"; std::cout << "3: Multiplication\n"; std::cout << "4: Division\n"; std::cout << "5: Exit program\n"; std::cin >> case_operation; switch (case_operation) { case 1: //Addition result = result + numbers[i + 1]; break; case 2: //Subtraction result = result - numbers[i + 1]; break; case 3: //Multiplication result = result * numbers[i + 1]; break; case 4: //Division result = result / numbers[i + 1]; break; case 5: //Exit program return 0; break; default: std::cout << "Error!\n"; break; }; break; } //Calculate with the next number except the last (last would be if-statement before) std::cout << "Please select the arithmetic operation:\n"; std::cout << "1: Addition\n"; std::cout << "2: Subtraction\n"; std::cout << "3: Multiplication\n"; std::cout << "4: Division\n"; std::cout << "5: Exit program\n"; std::cin >> case_operation; switch (case_operation) { case 1: //Addition result = result + numbers[i + 2]; break; case 2: //Subtraction result = result - numbers[i + 2]; break; case 3: //Multiplication result = result * numbers[i + 2]; break; case 4: //Division result = result / numbers[i + 2]; break; case 5: //Exit program return 0; break; default: std::cout << "Error!\n"; break; } } //Print out the result of the calculation std::cout << "Your result is " << result << "\n"; return 0; }
内容的提问来源于stack exchange,提问作者henninfa
相关产品推荐
相关产品推荐

