C++Primer Plus(第六版) 第七章 第六题
来源:互联网 发布:郑也夫被打脸 知乎 编辑:程序博客网 时间:2024/05/16 17:46
之前我写过C++Primer Plus 的第六章第二题,现在阅读到第七章第六题发现之前写的有点问题,就是在 输入的时候输入数字和点的混合体怎么办。
比如 4.34.3 或者 4..4 之类的字符串,这些很明显不是double值,但之前的代码能通过,故在此完善。
代码如下:
#include<iostream>#include<string>#include<cctype>#define MAX_SIZE 10using namespace std;int Fill_array(double ar[], int max);void Show_array(const double ar[], int len);void Reverse_array(double ar[], int len);bool judge_double(const string line);int main(){double ar[MAX_SIZE];int len = Fill_array(ar, MAX_SIZE);Show_array(ar, len);Reverse_array(ar + 1, len - 2);Show_array(ar, len);cin.get();return 0;}bool judge_double(const string line){bool judge = true;// 对字符'.'技术判断for (int i = 1; i < line.size(); i++)// 在调用此函数前已对0位进行判断故从1开始{if (isdigit(line[i]))// 如果是数字直接进入下一循环{continue;}if (judge && '.' == line[i])// 对字符'.'判断,且只是一次才进入下面语句{judge = false;// 将判断置为falsecontinue;}return false;//执行到这一语句肯定不符合以上条件,故不为double}return true;}int Fill_array(double ar[], int max){int len = 0;string line;for (; len < max; len++){cout << "Please input " << (len + 1) << " number: ";getline(cin, line, '\n');if (!isdigit(line[0])){break;}if (!judge_double(line)){break;}ar[len] = atof(line.c_str());}return len;}void Show_array(const double ar[], int len){for (int i = 0; i < len; i++){cout << ar[i] << " ";}cout << endl;}void Reverse_array(double ar[], int len){double temp;for (int i = 0; i < len/2; i++){temp = ar[i];ar[i] = ar[len - 1 - i];ar[len - 1 - i] = temp;}}
0 0
- C++Primer Plus(第六版) 第七章 第六题
- C++Primer Plus(第六版) 第十一章 第七题
- C++Primer Plus(第六版) 第六章 第二题
- 记录——《C Primer Plus (第五版)》第七章编程练习第六题
- C.Primer.Plus(第六版)第七章 编程练习
- C ++ Primer Plus 第六版 第七章编程练习答案
- C++ primer plus(第六版)第七章练习题
- C++Primer Plus(第六版) 第八章 第二题
- C++Primer Plus(第六版) 第八章 第四题
- C++Primer Plus(第六版) 第十章 第八题
- C++Primer Plus(第六版) 第十二章 第一题
- C++Primer Plus(第六版) 第十二章 第二题
- C++Primer Plus(第六版) 第十三章 第一题
- C++Primer Plus(第六版) 第十三章 第二题
- C++Primer Plus(第六版) 第十三章 第四题
- C++Primer Plus(第六版) 第十四章 第一题
- C++Primer Plus(第六版) 第十四章 第五题
- C++Primer Plus(第六版) 第十六章 第一题
- 在 Ubuntu16.04 中为fctix小企鹅增加五笔输入法
- 不见了
- 4.15
- consul怎么在windows下安装
- Angular的12个经典问题,看看你能答对几个?(文末附带Angular测试)
- C++Primer Plus(第六版) 第七章 第六题
- 搞定后台url/uri编码问题
- H
- 【leetcode】455. Assign Cookies
- 118.分页中显示出下面翻页的导航栏的布局
- Java数据结构与算法分析《九》快速排序
- dns高速缓存
- 面试4之字符串中的空格全部替换为“%20”
- Java数据结构与算法分析《十》二叉树