标题:自己做的小程序,想限制输入!学历尚浅,求教
只看楼主
暗夜无星
Rank: 1
来 自:神圣天堂
等 级:新手上路
帖 子:12
专家分:2
注 册:2010-8-1
结帖率:100%
 问题点数:0 回复次数:10 
自己做的小程序,想限制输入!学历尚浅,求教
程序代码:
#include <iostream>
#include <cmath>
using namespace std;
const double p=3.1415926;                           //定义圆周率
class Circle                                        //圆类
{    protected:
        double  r;                                  //半径
     public:
        void input();
        double area()
            {                                  //计算圆的面积
                return p*r*r;
            }
        double volume()
            {                                //计算圆的体积
                return 0;
            }
};



class Ball:public Circle
{   public:                      //球体类
        double area()
            {                                 //计算球的表面积面积
                return 4*p*r*r;
            }
        double volume()
            {                               //计算球的体积
                return 4*p*r*r*r/3;
            }
};
class Cylinder:public Circle//圆柱类
{  double h;
    public:
        void input1();
        double area()
            {                                //计算圆柱体表面积
                return 2*p*r*(r+h);
            }
        double volume()
            {                                //计算圆柱体积
                return p*r*r*h;
            }
};
class Cone:public Circle                 //圆锥类
{  double h;
    public:
        void input2();
        double area()                //计算圆锥表面积
        {
            double l=sqrt(h*h+r*r);
            return p*r*(r+l);
        }
        double volume()            //计算圆锥体积
        {       
            return p*r*r*h/3;
        }
};


void main()
{system("color  f9");
cout<<"请输入一个浮点数"<<endl;
cout<<"输入字母将此后的输入视作0处理"<<endl;
    Circle a;                    //定义圆类对象a
        cout<<"请输入圆的半径(必须大于零):"<<endl;
            a.input();
    Ball b;                        //定义球体类对象b
        cout<<"请输入球体半径(必须大于零):"<<endl;
            b.input();
    Cylinder c;                    //定义圆柱类对象c
        cout<<"请输入圆柱底面半径(必须大于零):"<<endl;
            c.input();
        cout<<"请输入圆柱高(必须大于零):"<<endl;
            c.input1();
    Cone d;                        //定义圆锥类对象d
        cout<<"请输入圆锥底面半径(必须大于零):"<<endl;
            d.input();
        cout<<"请输入圆锥高(必须大于零):"<<endl;
            d.input2();
        cout<<"圆面积: \t"<<a.area()<<endl;
        cout<<"球表面积: \t"<<b.area()<<"球体积: "<<b.volume()<<endl;
        cout<<"圆柱表面积: \t"<<c.area()<<"圆柱体积: "<<c.volume()<<endl;
        cout<<"圆锥表面积: \t"<<d.area()<<"圆锥体积: "<<d.volume()<<endl;
    }
void Circle::input()//类外定义circle类成员函数input()
{
    do
        {char str[20];
        cin>>str;
        r=atof(str);
        if(r<0)
        cout<<"请输入正数!:";
        }
        while(r<0);
}
void Cylinder::input1()//类外定义cylinder类成员函数input1()
{
    do
   
    {char str[20];
        cin>>str;
        h=atof(str);   
    if(h<0)
    cout<<"请输入正数!:";
    }
    while(h<0);
}
void Cone::input2()//类外定义cone类成员函数input2()
{
    do
   
    {char str[20];
        cin>>str;
        h=atof(str);
    if(h<0)cout<<"请输入正数!:";
    }
    while(h<0);
}





我想限制输入正数,已经解决了一小部分输入问题……可是如果输入诸如“324sde3f2”之类的……程序还是会出现乱码……








[ 本帖最后由 暗夜无星 于 2010-9-28 17:50 编辑 ]
搜索更多相关主题的帖子: 尚浅 学历 输入 
2010-09-28 17:46
暗夜无星
Rank: 1
来 自:神圣天堂
等 级:新手上路
帖 子:12
专家分:2
注 册:2010-8-1
得分:0 
………………

[ 本帖最后由 暗夜无星 于 2010-9-28 18:44 编辑 ]
2010-09-28 18:42
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
得分:0 
程序代码:
bool IsPositive(char *s)
{
    if(*s=='-')
    {
        return false;
    }
    while(*s!='\0')
    {
        if(*s<'0'||*s>'9')
        {
            return false;
        }
        ++s;
    }
    return true;
}

想象力征服世界
2010-09-28 19:23
jiangkunhgnc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:76
专家分:185
注 册:2010-8-21
得分:0 
可以对输入做一个筛选
用if语句和逻辑与运算判断你的输入,满足要求的继续运行,否则return(或exir(0)).
2010-09-28 19:32
kidangel666
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:139
注 册:2010-9-15
得分:0 
你可以用这个方法限制输入
给你个思路
int num;
printf("输入半径:\n");
if(scanf("%d",&num)==1)
   printf("输入正确");
else {printf("输入错误");fflush(stdin);}       //fflush(stdin); 这句话是必须的  不然会有错误
你自己可以加循环
下面是我自己做的简单程序帮组你理解下
#include<stdio.h>
#include<ctype.h>
#include <stdlib.h>

int main()
{
    int num,A=1;
    while(A)
    {
        printf("输入一个数:\n");
        //scanf("%d",&num);
        if(scanf("%d",&num)==1)
        {
            if(num%3 ==0&&num%5==0)
            { printf("%d能被3和5整除\n",num);A=0; }
            else
            { printf("%d不能被3和5整除\n",num);A=0; }
        }  
        else { printf("error\n");A=1;fflush(stdin); }
    }
    getchar();
    getchar();
    return 0;
}
2010-09-28 23:35
暗夜无星
Rank: 1
来 自:神圣天堂
等 级:新手上路
帖 子:12
专家分:2
注 册:2010-8-1
得分:0 
回复 5楼 kidangel666
呵呵……谢谢啊,不错
2010-09-29 23:20
gongyaping
Rank: 4
来 自:广东肇庆怀集
等 级:业余侠客
帖 子:174
专家分:257
注 册:2010-8-1
得分:0 
不错哈。
2010-10-07 22:18
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
得分:0 
不错哈

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-10-07 22:22
柳、暗
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-10-9
得分:0 
都这么厉害呢……佩服佩服……
2010-10-09 09:42
暗夜无星
Rank: 1
来 自:神圣天堂
等 级:新手上路
帖 子:12
专家分:2
注 册:2010-8-1
得分:0 
这些都是最一般的,你们学了就知道了……
编程的思想最重要了!一起努力学习!!
2010-11-09 14:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-321624-1-1.html




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

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