gpt4 book ai didi

C++ Visual Studio 无法完全运行程序

转载 作者:行者123 更新时间:2023-11-27 22:41:10 24 4
gpt4 key购买 nike

我有这个程序,我觉得我终于让我的代码正确了,但我的输出永远不会打印我的星号。我的一个 friend 告诉我通过另一个编译器运行它。我使用了 JDoodle,我的代码工作得很好。无论如何,我无法让它在 Visual Studio 中正常运行。我更新了它和一切。有人有什么建议吗?我会把我的代码留在这里,并且很想知道它在其他人的 Visual Studio 中是否有问题,或者我的编译器是否有问题。提前致谢。

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

int* histo(int* scores, int count);
double dev(int count, int* scores);
double mean(int count, int* scores);

int main()
{
int scores[101];
int count = 0;

cout << "Enter a score (-1 to stop): ";

do
{
cin >> scores[count++];
} while (scores[count - 1] != -1);
count--;

int* bins = histo(scores, count);

for (int i = 9; i >= 0; i--)
{
cout << i << "| ";

for (int j = 0; j < bins[i]; j++)
{
cout << "*";
}
cout << endl;
}

delete[] bins;

cout << "mean: " << mean(count, scores) << endl;
cout << "dev: " << dev(count, scores) << endl;
system("pause");
return 0;
}

int* histo(int* scores, int count)
{
int* bins = new int[10];

for (int i = 0; i < count; i++)
{
if (scores[i] < 10)
{
bins[0]++;
}
else if (scores[i] >= 10 && scores[i] < 20)
{
bins[1]++;
}
else if (scores[i] >= 20 && scores[i] < 30)
{
bins[2]++;
}
else if (scores[i] >= 30 && scores[i] < 40)
{
bins[3]++;
}
else if (scores[i] >= 40 && scores[i] < 50)
{
bins[4]++;
}
else if (scores[i] >= 50 && scores[i] < 60)
{
bins[5]++;
}
else if (scores[i] >= 60 && scores[i] < 70)
{
bins[6]++;
}
else if (scores[i] >= 70 && scores[i] < 80)
{
bins[7]++;
}
else if (scores[i] >= 80 && scores[i] < 90)
{
bins[8]++;
}
else if (scores[i] >= 90)
{
bins[9]++;
}
}
return bins;
}

double dev(int count, int* scores)
{
double x = 0;
double y = 0;
double std_dev = 0;
double mean_t;

mean_t = mean(count, scores);

for (int i = 0; i < count; i++)
{
x = pow(scores[i] - mean_t, 2);
y += x;
}
std_dev = sqrt(y / count);
return std_dev;
}
double mean(int count, int* scores)
{
double total = 0;

for (int i = 0; i < count; i++)
{
total += scores[i];
}

return total / count;
}

最佳答案

您似乎假设堆栈/堆上的自动变量被初始化为 0,但事实并非如此。例如。 int* bins = new int[10]; 为您提供了一个包含 10 个未初始化整数的数组,这些整数可以具有任何值,这可以解释为什么它适用于一个编译器而另一个不能。

因此您的 histo 函数可能会返回一个带有垃圾的数组。例如-1, -1337, ...

关于C++ Visual Studio 无法完全运行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48941953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com