如何在for循环中记录输入?

时间:2017-07-27 06:56:56

标签: c++

我正在尝试创建一个程序,要求一个类大小来定义程序要求测试分数的次数。
一旦得到它,它会使用for循环询问测试分数,直到达到班级大小 我想要做的是记录每个分数,以便最后可以公布,但我不知道如何在我正在使用的代码中记录每个单独的输入。我想让它运行如下:

  

输入分数:95
    输入分数:25
    原创得分:95,25

如果用户输入的班级大小为2.我该怎么做?也许有阵列,但我不知道如何加入这个?

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;


int main()
{
    int size;
    double score;
    cout << "Enter class size <1-20> \n";
    cin >> size;
    for (int i = 0; 0 <= size; i++) {
        cout << "Enter Score \n";
        cin >> score;
    }
    return 0;
}

3 个答案:

答案 0 :(得分:5)

for循环之前,实例化std::vector<double> scores(size);。这就是你用来记录所有分数的方法。 (写#include <vector>以引入此功能。)

然后在循环for (int i = 0; i < size; i++) {中修复拼写错误。

然后将cin调整为cin >> scores[i];。 (难道C ++标准库不聪明吗?不要试图理解背后的机制 - 只是接受这种符号似乎是合理的。)

然后您可以通过std::vector 迭代来输出分数。本网站上有很多问题可以告诉你如何做到这一点。

(最后,您将使用std::size_t作为矢量索引的类型,而不是int。)

答案 1 :(得分:2)

您只需使用double数组即可。这是代码段。

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;


int main()
{
    int size;
    double score[20]; // as size must me less than or equal 20
    cout << "Enter class size <1-20> \n";
    cin >> size;
    for (int i = 0; i < size; i++) {
        cout << "Enter Score \n";
        cin >> score[i];
    }
    cout<<"Original Scores: "; 

    // Now iterate through all scores.
    for(int i=0;i<size; i++){
       if(i){
           cout<<",";
       }
       cout<<score[i]
    }
    return 0;
}

注意:未选中得分大小(20)。

答案 2 :(得分:0)

使用range-for可以编写更紧凑的代码来读取值:

size_t sz;
std::cin >> sz;
std::vector<double> input(sz);
for(auto& el : input)
    std::cin >> el;