首页 > 解决方案 > 如何将输入值放入数组c ++中?

问题描述

C++ 新手。我想将输入值scoreCurrent放入不同的数组中,具体取决于它们是高于平均值还是低于平均值。我尝试从不同的网站和 youtube 寻找解决方案,但到目前为止都没有。我该怎么做呢?

如果我的整个代码一团糟,我深表歉意,并提前感谢您。

#include <iostream>

using namespace std;

int main()
{
     //  student count
    int students, upperLimit;

    cout<<"Enter no. of students: ";
    cin>>students;

     //  upper limit
    do
    {
        cout<<"Enter the upper limit: ";
        cin>>upperLimit;
        if(upperLimit<5)
        {
            cout<<"Invalid upper limit."<<endl;
            continue;
        }
            break;
    }while(true);

     //  student scores
    int scoreCurrent, scoreTotal;
    float average=0;
    int belowAve(students), aboveAve(students);

    for(int index=1; index<=students; index++)
    {
        cout<<"Enter score for student no. "<<index<<": ";
        cin>>scoreCurrent; //  take this and place it into an array

         //  condition invalid
        if(scoreCurrent>upperLimit || scoreCurrent<0)
        {
            int current=index-1;
            cout<<"Invalid score."<<endl;
            index=current;
            scoreCurrent=0;
        }

        scoreTotal+=scoreCurrent;
        average=(float) scoreTotal/(float) students;


        if(scoreCurrent>average)
        {
            // scoreCurrent values are placed in belowAve array;
        }

        if(scoreCurrent>average)
        {
            //  scoreCurrent values are placed in aboveAve array;
        }
    }

     //  display
    cout<<"Average: "<<average<<endl;
    cout<<"Scores above or equal average: "<<belowAve<<endl;
    cout<<"\nScores below average: "<<aboveAve<<endl;

    return 0;
}

标签: c++

解决方案


我的猜测是这scorecurrent是一个数组(以及index中的偏移量scorecurrent)?如果你认为这会奏效

std::cin >> scoreCurrent;

那么问题是:

  1. scorecurrent输入将放置在哪里(您不使用index)?
  2. (如果你想给所有索引打分)输入什么时候停止?

除了向量更好的论点(它是,因为你不需要指定它的大小并且可以push_back())我认为这个解决方案是解决你的问题的一种非常优雅的方式。

它使用 lambda 函数来迭代(固定大小)数组的所有元素。还有另一种更传统的解决方案,其中>>运算符std::cin被重载用于数组类型的参数。


推荐阅读