Add Two Numbers
2016-03-06 17:05
507 查看
C++的书刚看到第五章,想做做leetcode上的题目,其中第二题描述如下:
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
根据题设描述,类似于三位数的加法。受这个题目的启发编写了如下程序,自娱自乐一下。因为本程序没有用到类,希望各位编程高手不要见笑。
在编写以上代码的过程中遇到一些问题,总结一下:
1、while循环中&&左右的两个部分不是同时执行的,而是先执行前者,再执行后者;
2、对于vector型变量要用push_back()函数进行赋值,而不能用vec[i]这样的形式,vec[i]的形式会报错;
3、当输入第一个vector变量的时候,如果输入的数目大于事先给定的数目cnt,那么多余cnt的部分数据则会被划分倒第二个vector变量中。因此在程序中要加上fflush(stdin)用来清空输入的变量,这样第二个进行输入的时候则不会出现这样的问题。
4、关于fflush的用法见fflush。
5、也可以用cin.ignore(100,’\n’)来进行表示,但这样的局限是只忽略了给定数目的字符或者数字,当大于100时则会有问题。
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
根据题设描述,类似于三位数的加法。受这个题目的启发编写了如下程序,自娱自乐一下。因为本程序没有用到类,希望各位编程高手不要见笑。
#include<iostream> #include<vector> using namespace std; int main() { vector<int> vec1,vec2; int vecint1,vecint2; int cnt; cout<<"Please input the number: "<<endl; cin>>cnt; cout<<"Please input the first number array : "<<endl; while((vec1.size()<cnt)&&(cin>>vecint1)) { vec1.push_back(vecint1); if(vec1.size()==cnt) { //cin.clear(); //cin.ignore(100,'\n'); //忽略规定数目之后的100个字符 fflush(stdin); //忽略超过cnt数目之后的所有字符 cout<<"你输入的数字达到或超过了规定数目:"<<cnt<<endl; break; } } cout<<"Please input the second number array : "<<endl; while((vec2.size()<cnt)&&(cin>>vecint2)) { vec2.push_back(vecint2); if(vec2.size()==cnt) { fflush(stdin); break; } } vector<int> currsum;//sum, int *sum = new int[cnt]; int single,tens; for(int i=0;i<cnt;++i) currsum.push_back(vec1[i]+vec2[i]); cout<<"Mid Currsum :"<<endl; for(int i=0;i<cnt-1;++i) cout<<currsum[i]<<"->"; cout<<currsum[cnt-1]<<endl; for(int i=0;i<cnt-1;++i) { if(currsum[i]>=10) { currsum[i+1]+=1; single = currsum[i]%10; sum[i] = single; } else sum[i] = currsum[i]; } if(currsum[cnt-1]<10) sum[cnt-1] = currsum[cnt-1]; else { single = currsum[cnt-1]%10; sum[cnt-1]=single; } cout<<"Final Result:"<<endl; for(int i=0;i<cnt-1;++i) { cout<<sum[i]<<"->"; } cout<<sum[cnt-1]<<endl; system("pause"); return 0; }
在编写以上代码的过程中遇到一些问题,总结一下:
1、while循环中&&左右的两个部分不是同时执行的,而是先执行前者,再执行后者;
2、对于vector型变量要用push_back()函数进行赋值,而不能用vec[i]这样的形式,vec[i]的形式会报错;
3、当输入第一个vector变量的时候,如果输入的数目大于事先给定的数目cnt,那么多余cnt的部分数据则会被划分倒第二个vector变量中。因此在程序中要加上fflush(stdin)用来清空输入的变量,这样第二个进行输入的时候则不会出现这样的问题。
4、关于fflush的用法见fflush。
5、也可以用cin.ignore(100,’\n’)来进行表示,但这样的局限是只忽略了给定数目的字符或者数字,当大于100时则会有问题。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- 解析C++中派生的概念以及派生类成员的访问属性