【问题标题】:c++ arrays and loopsC++ 数组和循环
【发布时间】:2017-11-26 16:46:46
【问题描述】:

我得到了“n”个学生的名字,然后是“k”个他们得分的任务。每个任务都有自己的系数(例如,如果有 4 个任务,则有 4 个系数:0.2;0.3;0.3;0.4),因此系数的数量也是 'k'。我的工作是:

  1. 读取“n”(学生数量)和“k”(任务数量);
  2. 读取所有系数(稍后我将不得不与每个学生的每个分数相乘);
  3. 阅读每个学生的具体姓名和“k”分数,正如我所说,将每个分数乘以系数。系数是静态的。之后,我必须将我为 1 名学生所做的所有 4 次乘法相加,这将是他的最终成绩。如何为 name[0] 分配 finamark[0] 等等?我无法获得最终分数

    #include <iostream>
    using namespace std;
    int main(){
    
    int n, k, b = 0;
    double coefficients[10], marks[10], final[30] = {0};
    string name, names[30];
    
    cin >> n >> k;               //reading the amount of students n tasks
    for(int i = 0; i < k; i++){  //reading coefficients
        cin >> coefficient[i];
    }
    
    for(int i = 0; i < n; i++){    //reading names
      cin.ignore(80, '\n');
      getline(cin,name);
      names[i] = name;
      for (int j = b; j < k; j++){   //reading marks
        cin >> marks[j];
        marks[j] *= coefficient[j];   // trying to get the final mark for each students
        finalmark[j] += marks[j];
      }
      b += k;
      k += k;
    }
    }
    

【问题讨论】:

  • 使用 std::vector 代替数组。
  • 标题说数组和循环,那么什么到底是什么问题?
  • 恕我直言,更好的方法是使用结构向量而不是多个数组。示例:struct Course { std::string name; double coefficient; double mark;};.
  • 请使用输入数据样本的文本编辑您的帖子。

标签: c++ arrays loops


【解决方案1】:

如果没有关于您输入的任何准确信息,我想您应该将第二个 for 循环更改为:

for(int i = 0; i < n; i++){    //reading names
  cin.ignore(80, '\n');
  getline(cin,name);
  names[i] = name;
  for (int j = 0; j < k; j++){   //reading marks
    cin >> marks[j];
    marks[j] *= coefficient[j];   // trying to get the final mark for each students
    finalmark[j] += marks[j];
  }
}

简短说明:

  • 您总是希望准确读取每个学生的 k 分数,因此永远不要增加 k
  • 您可能会越界访问marksfinalmarks 数组。他们只有 10 个项目,j 可以大于 10,因为增量 b,例如:如果有 4 个任务和 10 个学生,当 i3,那么 j 从 12 开始,但是marks[12] 超出范围。
  • 我不知道b的目的是什么,但在我看来是 无用。如果您想知道读取标记的数量,它是n*k

另一方面,您应该考虑使用vectors 而不是原始数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 2017-03-07
    • 2022-06-15
    • 2020-10-28
    • 1970-01-01
    • 2021-02-13
    相关资源
    最近更新 更多