| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1399 人关注过本帖
标题:菜鸟问题!cin未被执行!
只看楼主 加入收藏
mjsxjy
Rank: 2
等 级:论坛游民
帖 子:16
专家分:25
注 册:2008-12-30
收藏
得分:0 
楼主啊。你标错了,未被执行的不是那一句。你这程序问题出在上面,那个while(cin>>x)竟然没有跳出循环。不过我不怎么会C++哈,特别是你用的模版我是一窍不通。但我也大概明白你程序的意思。
你看一下我给你改的
#include<vector>
#include<algorithm>
#include<iostream>
using namespace std;
void main()
{
    double x;
    vector<double> data;
    cout<<"请输入数据!"<<endl;
    while (cin>>x)
    {
        data.push_back(x);
        if (x==0)
        {
            cout<<"输入完毕!"<<endl;
            break;
   
        };
    };
int m=data.size(),n=0;
    if (m==0)
    {
        throw domain_error("数据不能为空!");
    }
    else
    {
        double number;
        cout<<"请输入你要找的数!"<<endl;
        cin>>number;                         //此处未被执行!!
        for (int i=0;i<m ;i++)
        {
            if (number==data[i])
            {
                n++;
            }
        }
        if (n==0)
        {
            cout<<"没有你要找的数"<<endl;
        }
        else
        {
        cout<<number<<"有"<<n<<"个"<<endl;
        };
    };
}

这样是可以了吧。改动了一点,跳出while的条件。

[ 本帖最后由 mjsxjy 于 2010-8-30 21:28 编辑 ]
2010-08-30 21:15
mjsxjy
Rank: 2
等 级:论坛游民
帖 子:16
专家分:25
注 册:2008-12-30
收藏
得分:0 
你调试我上面的代码看看嘛,可以找到需要找的数。
我用if x==0来跳出循环。这里随便你自己想用什么方法来跳出,我只是用最直接最方便的来跳一下。别的地方如果我改的还不合你意,你自己再改改吧。


[ 本帖最后由 mjsxjy 于 2010-8-30 21:31 编辑 ]
2010-08-30 21:20
ToBeOOP
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:106
专家分:181
注 册:2010-7-8
收藏
得分:0 
弄错了...刚刚是受了toadswan的启发...
2010-08-30 22:48
ToBeOOP
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:106
专家分:181
注 册:2010-7-8
收藏
得分:0 
我的代码可以啊...你需要输入Ctrl + Z来跳出循环,然后才不会跳过.下面那个cin
2010-08-30 22:52
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
楼主试 6 楼的代码依然不行吗?我也觉得加个 cin.clear( ); 就应该可以了。
2010-08-31 18:34
sudong0913
Rank: 1
等 级:新手上路
帖 子:38
专家分:5
注 册:2009-4-15
收藏
得分:0 
回复 16楼 pangding
图片附件: 游客没有浏览图片的权限,请 登录注册
要输入两次ctrl+z才能被执行~~~
当输入字符时依然被跳过~~
求教~~~
2010-09-01 09:04
sudong0913
Rank: 1
等 级:新手上路
帖 子:38
专家分:5
注 册:2009-4-15
收藏
得分:0 
已经解决~~
cin.clear();只是清楚了流的错误标记~~~没有清空输入缓冲区~~
在后面加个cin.sync();清空输入缓冲区的所有数据就完美解决了~~
//////////////////////////////////////////////////////////////////////
#include<vector>
#include<algorithm>
#include<iostream>
using namespace std;
void main()
{
    cout<<"请输入数据!"<<endl;
    double x;
    vector<double> data;
    while (cin>>x)
    {
        data.push_back(x);
    }
///////////////////////////////
     cin.clear();
     cin.sync();
//////////////////////////////
    int m=data.size(),n=0;
    if (m==0)
    {
        throw domain_error("数据不能为空!");
    }
    else
    {
        double number;
        cout<<"请输入你要找的数!"<<endl;
        cin>>number;
        for (int i=0;i<m ;i++)
        {
            if (number==data[i])
            {
                n++;
            }
        }
        if (n==0)
        {
            cout<<"没有你要找的数"<<endl;
        }
        else
        {
        cout<<number<<"有"<<n<<"个"<<endl;
        }
    }
}

2010-09-01 15:21
myth_feng
Rank: 2
等 级:论坛游民
威 望:1
帖 子:25
专家分:59
注 册:2010-8-11
收藏
得分:0 
void main()
{
    cout<<"请输入数据!"<<endl;
    double x;
    vector<double> data;
    while (cin>>x)
    {   if (x<10.0) {
           data.push_back(x);
        }
        else break;                      //这边加条控制跳出语句就可以了。。
    }
    int m=data.size(),n=0;
    if (m==0)
    {
        throw domain_error("数据不能为空!");
    }
    else
    {
        double number=0.0;
        cout<<"请输入你要找的数!"<<endl;
        std::cin>>number;                         //此处未被执行!!
        for (int i=0;i<m ;i++)
        {
            if (number==data[i])
            {
                n++;
            }
        }
        if (n==0)
        {
            cout<<"没有你要找的数"<<endl;
        }
        else
        {
        cout<<number<<"有"<<n<<"个"<<endl;
        }
    }
}
2010-09-28 17:17
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
回复 楼主 sudong0913
while (cin>>x) 这个写法不是很好,因为cin返回值不是bool类型的

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-09-29 00:04
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
回复 19楼 vfdff
有个自动强转函数 operator void *() const 专门转这个用的。像:
while (cin >> x)
或者
if (cin >> x)
之类的,还是一种标准写法呢~~
2010-10-10 01:41
快速回复:菜鸟问题!cin未被执行!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044647 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved