C++ 尝试创建直方图的矢量
C++ Vector trying to create histogram
所以今天我决定用向量写一个简单的直方图,但是当我编写这个程序并编译它时,输出显示"*"的永无止境。
#include <iostream>
#include <conio.h>
#include <ios>
#include <vector>
#include <algorithm>
using std::cout;
using std::vector;
using std::cin;
using std::endl;
int main()
{
int x;
double k;
cout<<"How many range would you like = ";
cin>>x;
vector<double> number; //All data was being stored here
cout<<"Input the number to be included in histogram = ";
while(cin>>k)
number.push_back(k);
x = x*10;
sort(number.begin(), number.end());
for(int i=0;i<x;i+=10) // Problem is on this loop statement, but I can't fix it.
{
vector<double>::size_type u = 0;
cout<<i<<"-"<<i+9<<" = "; //The range, Intended to put the "*" besides it.
while(u < number.size())
{
if( number[u]<=i+9 && number[u]>=i)
cout<<"*"; //For showing how many numbers on that range
else
u++;
}
cout<<endl;
}
getch();
return 0;
}
没有显示错误,只有第一个范围内"的永无止境。例如,当程序编译时,我输入数据,它显示"0-9 = *******",它只是继续重复而不转到下一行。有什么建议可以解决这个问题吗?编辑:我之前尝试使用迭代器,但它与这个具有相同的输出。
所以,在你的while
循环中...
if( number[u]<=i+9 && number[u]>=i)
cout<<"*";
你有那个代码。 问题是,在此while
循环中,您只在if else
的else
部分中递增u
。 因此,如果您进入while
循环并且此if
条件返回 true
,它将永远保持true
。 您将永远陷入执行cout<<"*";
的while
循环中,因为您没有执行任何操作来更改此处u
的值。
问题是:
if( number[u]<=i+9 && number[u]>=i)
cout<<"*"; //For showing how many numbers on that range
else
u++;
一旦你在范围内找到一个数字,else
意味着你不会继续下一个数字;你会留在那里,永远打印*
。
你可以简单地删除else
;或者你可以把它构造成一个for
循环,这可能会使它更明显地正确:
for (size_t u = 0; u < number.size(); ++u)
或者,自 2011 年以来,新式for
循环:
for (double n : number) {
if (n < i+10 && n >= i) {
cout << "*";
}
}
我还冒昧地修复了逻辑,例如,不排除9.5
。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 试图在visual studio上用C++创建一个桌面应用程序
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 创建直方图以显示每个类别/箱中带有星号的项目数量
- 使用 2D 数据创建 3D 直方图(OpenCV?
- C++在 txt 文件中创建带有测试分数的直方图
- 创建文本文件中出现的前10个单词的直方图
- C++ 尝试创建直方图的矢量
- 如何在OpenCV上创建用于制作直方图的Mat
- 创建LBP直方图
- 从值数组创建直方图/绘图
- 创建没有大"if-else"块的温度直方图
- 如何创建矢量<矢量的直方图<long>>