📄 int.cpp
字号:
#include<algorithm>//STL 算法
#include<stdio.h>
#include<stdlib.h>
#include<vector>//向量
#include<iterator>//株代器
#include<iostream>
using namespace std;//使用std命名空间
//接口依次为向量,向量,向量
void add(vector<int> ZHU1,vector<int> ZHU2,vector<int> &TEMP)//加法
{
vector<int>::iterator i,j;//株代器,用于处理数据
int kkk,w=0;//kkk用来储存入列数据,w表示进位
i=ZHU1.end()-1;
j=ZHU2.end()-1;//初始化;
while(1){
if(*i+*j+w>=10){//如果当前位相加大于十
kkk=*i+*j-10+w;
w=1;
}
else {
kkk=*i+*j+w;//否则
w=0;
}
TEMP.insert(TEMP.begin(),kkk);//插入kkk到TEMP
if(i==ZHU1.begin()&&j==ZHU2.begin()){//当i与j位于数组的首位
if(w==1)
TEMP.insert(TEMP.begin(),w);//且要进位,插入一
break;//跳出循环
}
if(i==ZHU1.begin()){
*i=0;//当前值置为0;
}
else i--;
if(j==ZHU2.begin()){
*j=0;
}
else j--;
}
}
int max(vector<int> ZHU1,vector<int> ZHU2)//求大数;
{
vector<int>::iterator i,j;//株代器
i=ZHU1.begin();
j=ZHU2.begin();
if(ZHU1.size()>ZHU2.size())//如果ZHU1的长度大于ZHU2,返回1
return 1;
else if(ZHU1.size()==ZHU2.size()){//长度相等时,比较下一位的大小
for(;i!=ZHU1.end();i++,j++){
if(*i>*j)
return 1;//若大于,返回1
else return 0;//否则返回0
}
}
else return 0;//否则返回0
}
//接口依次为向量,向量,向量
void dec(vector<int> ZHU1,vector<int> ZHU2,vector<int> &TEMP)//减法
{
vector<int>::iterator i,j;//株代器
int kkk,w=0;//kkk用来储存当前值,w是借位
i=ZHU1.end()-1;
j=ZHU2.end()-1;//初始化,指向末尾
while(1){
if(max(ZHU1,ZHU2)==1){//如果ZHU1大于ZHU2
if(*i-*j-w<0){//并且当前位相减小于零
kkk=10-*j+*i-w;
w=1;//借位
}
else {//否则
kkk=*i-*j-w;
w=0;
}
}
else {//如果ZHU1小于ZHU2
if(*j-*i-w<0){//并且当前位相减小于零
kkk=10-*i+*j-w;
w=1;//借位
}
else{//否则
kkk=*j-*i-w;
w=0;
}
}
TEMP.insert(TEMP.begin(),kkk);//插入kkk
if(i==ZHU1.begin()&&j==ZHU2.begin())
break;//如果i,j到了头,跳出循环
if(i==ZHU1.begin()){
*i=0;//置零
}
else i--;
if(j==ZHU2.begin()){
*j=0; //置零
}
else j--;
}//while
i=TEMP.begin();
while(1){
if(*i!=0||TEMP.size()<=1)
break;
else
TEMP.erase(i);
i++;
}
}//dec
void main()//主函数
{
ostream_iterator<int> screen(cout,"");//输出流设置
vector<int> zhu1,zhu2,temp;//向量
char aa,bb,cc;
int kk;
cout<<"输入你要的数:";
cout<<"例如1+1=(+,+)或1-1=(-,-)"<<endl;
//以字符的形式输入
while(1){
while(1){//以加减号为截至
scanf("%c",&aa);
if(aa=='+'||aa=='-'){
bb=aa;
break;
}
kk=atoi(&aa);//转成int形
zhu1.push_back(kk); //入列
}
while(1){//以等号结束
scanf("%c",&aa);
if(aa=='=')
break;
kk=atoi(&aa);
zhu2.push_back(kk);//入列
}
scanf("(%c,%c)",&aa,&cc);
break;
}
if(bb=='+'&&aa=='+'&&cc=='+'||bb=='-'&&aa=='+'&&cc=='-')
add(zhu1,zhu2,temp);
else if(bb=='+'&&aa=='+'&&cc=='-'||bb=='-'&&aa=='+'&&cc=='+')
dec(zhu1,zhu2,temp);
else if(bb=='+'&&aa=='-'&&cc=='+'||bb=='-'&&aa=='-'&&cc=='+')
dec(zhu2,zhu1,temp);
else if(bb=='+'&&aa=='-'&&cc=='-'||bb=='-'&&aa=='-'&&cc=='-'){
add(zhu1,zhu2,temp);
*temp.begin()=-*temp.begin();
}
else cout<<"请输入正负!"<<endl;
copy(temp.begin(),temp.end(),screen);//输出TEMP
cout<<endl;
system("pause");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -