《数据结构、算法与应用》1.(三次机会检测输入是否大于0)

最近在读《数据结构、算法与应用》这本书,把书上的习题总结一下,用自己的方法来实现了这些题,可能在效率,编码等方面存在着很多的问题,也可能是错误的实现,如果大家在看这本书的时候有更优更好的方法来实现,还请大家多多留言交流多多指正,谢谢偷笑吐舌头


1.试编写一个模板函数,它要求用户输入一个非负数,并负责验证用户所输入的数是否真的大于或等于 0,如果不是,它将告诉用户该输入非法,需要重新输入一个数。在函数非成功退出之前,应给用户三次机会。如果输入成功,函数应当把所输入的数作为引用参数返回。输入成功时,函数应返回 true,否则返回false 。上机测试该函数。


//
//  main.cpp
//  Test_01
//
//  Created by cc on 14-3-30.
//  Copyright (c) 2014年 cc. All rights reserved.
//

/*      
 1. 试编写一个模板函数,它要求用户输入一个非负数,并负责验证用户所输入的数是否真的大于或等于 0,如果不是,它将告诉用户该输入非法,需要重新输入一个数。在函数非成功退出之前,应给用户三次机会。如果输入成功,函数应当把所输入的数作为引用参数返回。 输入成功时,函数应返回 true, 否则返回false 。上机测试该函数。
 */


#include <iostream>

using namespace std;

//声明
template <typename T>
bool checkInput(T& t);

int main(int argc, const char * argv[]) {
    
    int ref = 0;
    int i = 0;
    bool isPositive = false;
    for (; i < 3; i++) {
        isPositive = checkInput(ref);
        if (isPositive) {
            cout << "输入成功,您输入的正数为:" << ref << endl;
            break;
        } else {
            continue;
        }
    }
    
    return 0;
}


//定义
template <typename T>
bool checkInput(T& ref) {
    int inputVal;
    cin >> inputVal;
    if (inputVal >= 0) {
        ref = inputVal;
        return true;
    } else {
        cerr << "您输入的数是负数,非法!" << endl;
        return false;
    }
}


输入正确打印结果:


3次输入错误后程序退出,打印结果:



本文由CC原创总结,如需转载请注明出处:http://blog.csdn.net/oktears/article/details/22593499

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

douban.com/note/356754274/
douban.com/note/356754286/
douban.com/note/356754294/
douban.com/note/356754300/
douban.com/note/356754317/
douban.com/note/356754322/
douban.com/note/356754343/
douban.com/note/356754361/
douban.com/note/356754406/
douban.com/note/356754410/
douban.com/note/356754426/
douban.com/note/356754439/
douban.com/note/356754442/
douban.com/note/356754452/
douban.com/note/356754461/
douban.com/note/356754473/
douban.com/note/356754482/
douban.com/note/356754519/
douban.com/note/356754632/
douban.com/note/356754645/
douban.com/note/356754651/
douban.com/note/356754699/
douban.com/note/356754713/
douban.com/note/356754739/
douban.com/note/356754753/
douban.com/note/356754769/
douban.com/note/356754790/
douban.com/note/356754811/
douban.com/note/356754865/
douban.com/note/356754871/
douban.com/note/356754898/
douban.com/note/356754909/
douban.com/note/356754931/
douban.com/note/356754946/
douban.com/note/356754952/
douban.com/note/356754985/
douban.com/note/356755005/
douban.com/note/356755028/
douban.com/note/356755143/
douban.com/note/356755154/
douban.com/note/356755168/
douban.com/note/356755176/
douban.com/note/356755185/
douban.com/note/356755190/
douban.com/note/356755206/
douban.com/note/356755211/
douban.com/note/356755235/
douban.com/note/356755264/
douban.com/note/356755303/
douban.com/note/356755319/
douban.com/note/356755332/
douban.com/note/356755354/
douban.com/note/356755373/
douban.com/note/356755380/
douban.com/note/356755408/
douban.com/note/356755424/
douban.com/note/356755438/
douban.com/note/356755452/
douban.com/note/356755525/
douban.com/note/356755538/
douban.com/note/356755558/
douban.com/note/356755565/
douban.com/note/356755585/
douban.com/note/356755601/
douban.com/note/356755633/
douban.com/note/356755654/
douban.com/note/356755662/
douban.com/note/356755689/
douban.com/note/356755723/
douban.com/note/356755739/
douban.com/note/356755746/
douban.com/note/356755767/
douban.com/note/356755783/
douban.com/note/356755800/
douban.com/note/356755815/
douban.com/note/356755835/
douban.com/note/356755851/
douban.com/note/356755863/
douban.com/note/356755946/
douban.com/note/356755954/
douban.com/note/356755972/
douban.com/note/356755987/
douban.com/note/356756008/
douban.com/note/356756018/
douban.com/note/356756033/
douban.com/note/356756059/
douban.com/note/356756072/
douban.com/note/356756085/
douban.com/note/356756173/
douban.com/note/356756191/
douban.com/note/356756202/
douban.com/note/356756239/
douban.com/note/356756241/
douban.com/note/356756253/
douban.com/note/356756265/
douban.com/note/356756292/
douban.com/note/356756317/
douban.com/note/356756327/
douban.com/note/356756471/
douban.com/note/356756492/
douban.com/note/356756519/
douban.com/note/356756529/
douban.com/note/356756545/
douban.com/note/356756561/
douban.com/note/356756573/
douban.com/note/356756596/
douban.com/note/356756610/



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值