| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 520 人关注过本帖
标题:谁看下我错哪了,一开始输入0后就出错!!peach5460在吗,给分的机会到了
只看楼主 加入收藏
hjb5074
Rank: 1
等 级:新手上路
帖 子:19
专家分:2
注 册:2012-5-31
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:9 
谁看下我错哪了,一开始输入0后就出错!!peach5460在吗,给分的机会到了
#include <iostream>
#include<string>
using namespace std;

class book
{
public:
    int num;
    float price;
    book * next;
};

book *head=NULL;
bool check(string str)
{
    for(int i=0;i<str.length();i++)
    {
        if ((str[i]<'0'||str[i]>'9' )&& (str[i]!='.'))
        {
   
            return false;
        }
    }
    return true;
}

book * creat()
{
   
    book * pone;
    book * ptwo;
    pone=new book;
    ptwo=pone;
    head=pone;
    cout<<"输入图书编号以0结束"<<endl;
    string str;
    cin>>str;
    while (!check(str))
    {
        cout<<"你输入的不是数字,请输入数字"<<endl;
        cin>>str;
    }
    pone->num=atoi(str.c_str());
        
    if(pone->num!=0)
    {
        cout<<"请输入图书的价格:"<<endl;
            cin>>str;
    while (!check(str))
    {
        cout<<"你输入的不是数字,请输入数字"<<endl;
        cin>>str;
    }
    pone->price=atof(str.c_str());
   
    }
    else
    {
        delete pone;ptwo=NULL;ptwo->next=NULL;head=NULL;return head;
    }
    while (pone->num!=0)
    {
      ptwo=pone;
      pone=new book;
      cout<<"输入图书编号以0结束"<<endl;
      cin>>str;
    while (false==check(str))
    {
        cout<<"你输入的不是数字,请输入数字"<<endl;
        cin>>str;
    }
    pone->num=atoi(str.c_str());
    if(pone->num!=0)
    {
        cout<<"请输入图书的价格:"<<endl;
        cin>>str;
    while (false==check(str))
    {
        cout<<"你输入的不是数字,请输入数字"<<endl;
        cin>>str;
    }
    pone->price=atof(str.c_str());
   
    }
   

   
    }

        delete pone;            
        pone->next=NULL;
        return head;
}
int main()
{
    creat();
    return 0;
}
要讲清楚呦,本人比较笨的
搜索更多相关主题的帖子: head namespace include public return 
2013-04-06 15:52
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
干嘛指明找我?
自己调试一下嘛...

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-06 19:06
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:20 
一开始就输入0的话,代码运行到这里来了
        delete pone;
        ptwo=NULL;
        ptwo->next=NULL;
        head=NULL;
        return head;

pttwo都为null了,还怎么ptwo->next=NULL;

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-06 19:21
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
另外说一句,代码重复太多了,精简一下

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-06 19:34
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:0 
if ((str[i]<'0'||str[i]>'9' )&&(str[i]!='-'))你想判断是不是数字,不用这样吧!而且'.'不对吧!c_str()函数返回一个指向正规C字符串的指针,int atoi(const char *nptr);
函数说明: 参数nptr字符串,如果第一个非空格字符存在,并且,如果不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。

Maybe
2013-04-06 21:26
hjb5074
Rank: 1
等 级:新手上路
帖 子:19
专家分:2
注 册:2012-5-31
收藏
得分:0 
以下是引用peach5460在2013-4-6 19:06:31的发言:

干嘛指明找我?
自己调试一下嘛...
已经把你列为,专职导师了,呵呵呵呵
2013-04-07 10:24
hjb5074
Rank: 1
等 级:新手上路
帖 子:19
专家分:2
注 册:2012-5-31
收藏
得分:0 
回复 5楼 邓士林
我用'.'是想检测输入的不是不是带小数点的数值
2013-04-07 10:30
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
以下是引用hjb5074在2013-4-7 10:30:53的发言:

我用'.'是想检测输入的不是不是带小数点的数值

他说的这个情况我没试过,你说输入0挂了,我就看了一下,的确挂了
就说了一下...

至于字符串转数字,你转错了吗?
我没看咧

友情送你个正则
^[+-]?([\\d]+([\\.][\\d]*)?)([Ee][+-]?[\\d]+)?$

[ 本帖最后由 peach5460 于 2013-4-7 10:40 编辑 ]

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-07 10:34
hjb5074
Rank: 1
等 级:新手上路
帖 子:19
专家分:2
注 册:2012-5-31
收藏
得分:0 
以下是引用peach5460在2013-4-7 10:34:41的发言:

 
他说的这个情况我没试过,你说输入0挂了,我就看了一下,的确挂了
就说了一下...
 
至于字符串转数字,你转错了吗?
我没看咧
 
友情送你个正则
^[+-]?([\\d]+([\\.][\\d]*)?)([Ee][+-]?[\\d]+)?$
c++字符串用c_str()转换成c字符串,再用atoi转换成数字,没错呀
2013-04-08 18:31
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
以下是引用hjb5074在2013-4-8 18:31:59的发言:

c++字符串用c_str()转换成c字符串,再用atoi转换成数字,没错呀

其实你的检测是错的
比如3.2.1明显不是小数,你的check会返回true

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-08 18:55
快速回复:谁看下我错哪了,一开始输入0后就出错!!peach5460在吗,给分的机会到 ...
数据加载中...
 
   



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

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