无法找到循环的位置,有人可以帮助找到它
在我看来,所有的循环都关闭了。
我应该使用for循环打印出一个垂直条形图,但它似乎是循环的
#include <iostream>
using namespace std;
int main()
{
const int MAX=100;
int array[MAX];
int highest=0;
for (int counter=0; counter<MAX; counter++) {
cin>>array[counter];
if(array[counter]==0){
for (int check=0; check<=counter; check++) {
if(array[check]>highest)
highest=array[check];
}
for (int rows=highest;rows>=1;rows--) {
for (int cols=0; cols<=26; cols++) {
if (array[cols]>=rows)
cout<<"* ";
else
cout<<" ";
}
cout<<endl;
}
}
}
return 0;
}
答案 0 :(得分:1)
有几个地方您正在使用未初始化的值。
更改
int highest = array[0]; // array[0] is uninitialized
到
int highest = 0;
更改
for(int find = 0;find<=25;find++) // Not all elements of
// array have been initialized.
到
for(int find = 0;find<=counter;find++)
我无法保证代码中其他部分的逻辑有效性。
答案 1 :(得分:1)
您的代码中存在错误:
highest
。0
时才会输出您的输出分支,而不是有人输入25个实际数字。array[]
输入值终止,您可以(并且将会)评估0
中的内容是不确定的。i < 1
循环完全没必要。highest
;它不需要在之后完成。考虑上述所有因素。
#include <iostream>
int main()
{
unsigned int arr[25] = {0}, highest=0;
int len = 0;
for (; len < 25 && std::cin >> arr[len] && arr[len] > 0; ++len)
{
if (highest < arr[len])
highest = arr[len];
}
while (highest--)
{
for (int i=0; i<len; ++i)
std::cout << ((highest < arr[i]) ? '*' : ' ') << ' ';
std::cout << '\n';
}
}
<强>输入强>
12 5 7 11 6 9 4 8 10 2 0
<强>输出强>
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
祝你好运。
答案 2 :(得分:0)
以下是更正后的计划:
#include <iostream>
#define MAX 25
using namespace std;
int main() {
int array[100] = {0,};
int highest = array[0];
for (int counter = 0; counter < MAX; counter++){
cin >> array[counter];
if (array[counter] == 0){
for (int i = 0; i <1; i++){
for (int find = 0; find < MAX; find++){
if (array[find]>highest){
highest = array[find];
}
}
for (int rows = highest; rows >= 1; rows--){
for (int cols = 0; cols < MAX; cols++){
if (array[cols] >= rows){
cout << "* ";
}
else{
cout << " ";
}
}
cout << endl;
}
}
}
}
for (int counter = 0; counter < MAX; counter++){
cout << array[counter] << endl;
}
getchar();
return 0;
}
此程序无法像您声称的那样无限运行。它运作良好。 :)