程序输入8个数字并获得总和,如果超过21则输出数字

时间:2014-10-15 19:13:34

标签: c++

我试图制作一个程序,从用户那里得到8个数字,并找到总和。如果任何数字表示用户输出超过21,那么我希望显示这些数字。我得到的错误是:

  

main.cpp:在函数'int main()中:main.cpp:15:23:错误:ISO C ++禁止指针和整数之间的比较[-fpermissive]

以下是来源:

#include <iostream>
using namespace std;

int main() {
   const int NUM_ELEMENTS = 8; // Number of elements
   int userVals[NUM_ELEMENTS]; // User numbers
   int i = 0;                  // Loop index
   int sumVal = 0;             // For computing sum
   int prntSel = 0;            // For printing greater than 21

   // Prompt user to populate array
   cout << "Enter " << NUM_ELEMENTS << " integer values..." << endl;

   for (i=0; i > prntSel; ++i) {
       if (userVals > 21)
       cout << prntSel << endl;
   }
   for (i = 0; i <= NUM_ELEMENTS; ++i) {
      cout << "Value: " << prntSel << endl;
      cin >> userVals[i];
   }

   // Determine sum
   sumVal = 0;

   for (i = 0; i < NUM_ELEMENTS; ++i) {
      sumVal = sumVal + userVals[i];
   }

   cout << "Sum: " << sumVal << endl;

   return 0;
}

3 个答案:

答案 0 :(得分:1)

你在这里有一条线

if (userVals > 21)

应该阅读

if (userVals[i] > 21)

userValsint的数组。在循环遍历数组时,需要使用[i]从数组中索引该值。

你还有另一个问题。

for (i = 0; i <= NUM_ELEMENTS; ++i)

数组的有效索引为012 ... 7。您不能索引userVals[8],否则您将索引超出范围并产生未定义的行为。您应该将循环更改为

for (i = 0; i < NUM_ELEMENTS; ++i)

答案 1 :(得分:1)

错误几乎解释了这个问题,

if (userVals > 21)

在这一行中,您试图将数组的基址与数字进行比较。 要比较数组的元素,请使用索引..

if (userVals[i] > 21)

另一个问题是`for loops

for (i=0; i > prntSel; ++i)

在此,prntSel具有值0,因此循环条件在开始时失败,并且循环内没有任何内容被执行。

for (i = 0; i <= NUM_ELEMENTS; ++i)

在此for循环中,使用NUM_ELEMENTS检查条件,其值为8。由于数组具有8个元素,因此有效索引为0 1 2 3 4 5 6 7,最后一次迭代将超过数组索引。

答案 2 :(得分:0)

您的代码没有任何优点,修复一个错误将跟随另一个错误,还有很多工作要做:

   int userVals[NUM_ELEMENTS]; // User numbers

它是一个数组,你试图将它与后来的int进行比较

   for (i=0; i > prntSel; ++i) { // shouldn't it be i < NUM_ELEMENTS?
       if (userVals > 21) // comparing array with int, should be `userVals[i]`
       cout << prntSel << endl;
   }

prntSel和我都是零,这意味着它永远不会在那里结束

   for (i = 0; i <= NUM_ELEMENTS; ++i) {
      cout << "Value: " << prntSel << endl;
      cin >> userVals[i];
   }

与以前一样,使用prntSel[i]

-

我的2美分