不显示任何输出

时间:2017-05-07 00:29:54

标签: c++ output runtime-error

即使在函数的第一个和第二个循环之间显示cout语句的输出,也不显示函数的第二个循环的任何输出。输入3 4 8 5作为cin。我需要得分为0 5 1.总得分为6。

代码:

#include <bits/stdc++.h>
#include <iostream>
#include <vector>
using namespace std;

long getMaxScore(vector < long > a){
// Complete this function
long runningSum = 0;
int n = a.size();
vector<long> scores(n);
int j=0;
long totalScore;


for(int i = 0; i < n;)
{   
    scores[j] = runningSum%a[n-1];
    runningSum = runningSum + a[n-1];
    n--;
    j++;    
}

cout<<scores[0]<<endl;
cout<<scores[1]<<endl;
cout<<scores[2]<<endl;

for(long k=0; k<n; k++)
{
    totalScore = 0;
    totalScore+=scores[k];
    cout<<totalScore<<endl;
}

//return totalScore;}

int main() {
int n;
cin >> n;
vector<long> a(n);
for(int a_i = 0; a_i < n; a_i++){
   cin >> a[a_i];
}
long maxScore = getMaxScore(a);
return 0;}

1 个答案:

答案 0 :(得分:0)

<强>问题

循环

for(int i = 0; i < n;)
{   
    scores[j] = runningSum%a[n-1];
    runningSum = runningSum + a[n-1];
    n--;
    j++;    
}

n等于零时结束。

因此,当程序遇到循环时

for(long k=0; k<n; k++)
{
    totalScore = 0;
    totalScore+=scores[k];
    cout<<totalScore<<endl;
}

由于k < n为假,所以在循环内部没有任何内容。

<强>解决方案

我建议在第二个循环之前添加一行来重置n的值。

n = a.size();
for(long k=0; k<n; k++)
{
   ...
}

移动线

    totalScore = 0;

在循环之外积累分数。

totalScore = 0;
for(long k=0; k<n; k++)
{
    totalScore += scores[k];
    cout << totalScore << endl;
}