⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 20060106151135668.cpp

📁 大数的运算,实现30位以上的大数的运算,很好用的啊,我是新手来的啊,有意见的联系啊
💻 CPP
字号:
#include "iostream.h"
#include "string.h"
#include "stdlib.h"
int g;                  //g是接收功能选择的变量
//                                   加法函数
void out()
{
	cout<<"                 程序功能:可以完成任意大数的加法,减法和比较大小"<<endl;
	cout<<"                           乘法,除法和求余只能完成一定范围内数的运算"<<endl<<endl<<endl;
}
void add(char a[],char b[],int x,int y,int f,int d)
{
	char c[102];
	int i;
	int j;
	int jin=0;
	int s=0;
	int m,ma;
	int xx,yy;
     if(d==0)
	{
		xx=0;yy=0;
	}
	if(d==1)
	{
		xx=1;yy=0;
	}
    if(d==2)
	{
		xx=0;yy=1;
	}
	if(d==3)
	{
		xx=1;yy=1;
	}
	    x>y?m=x:m=y;
		ma=m;
		i=x-1;
		j=y-1;
	for(;m>0;i--,j--,m--)
	{	
		if(j<yy && i>=xx)
			s=int(a[i])-48+jin;     //将字符转换成整型
		else if(i<xx && j>=yy)
			s=int(b[j])-48+jin;
		else if(i>=xx && j>=yy)
			s=(int(a[i])-48+int(b[j])-48+jin);
	    if(s>9)
		{
			jin=1;
			c[m]=char(s+38);
		}
		else
		{
			jin=0;
			c[m]=char(s+48);
		}
	}
	if(jin==1)
		c[0]='1';
	else
		c[0]=' ';
	if(g==1)
	{
		  cout<<"两数相加的结果为:";
	   if(f==0)
	     for(i=0;i<ma+1;i++)
            cout<<c[i];
	   else
	   {
		    cout<<'-';
	    	for(i=0;i<ma+1;i++)
               cout<<c[i];
	   }
	}
	if(g==2)
	{
		cout<<"两数相减的结果为:";
		if(f==0)
			for(i=0;i<ma+1;i++)
				cout<<c[i];
		else
		{
			cout<<'-';
			for(i=0;i<ma+1;i++)
				cout<<c[i];
		}
	}
	cout<<endl;
}
//                                 减函数
void jian(char a[],char b[],int x,int y,int f,int d)
{
    char c[102];
	int i;
	int j;
	int jin=0;
	int s=0;
	int m,ma;
	int xx,yy;
    if(d==0)
	{
		xx=0;yy=0;
	}
	if(d==1)
	{
		xx=1;yy=0;
	}
    if(d==2)
	{
		xx=0;yy=1;
	}
	if(d==3)
	{
		xx=1;yy=1;
	}
	    m=x-1;
		ma=m;
		i=x-1;
		j=y-1;
	for(;m>=0;i--,j--,m--)
    {	
		if(j<yy&&i>=xx)
			s=int(a[i])-48-jin;
		else if(i>=xx&&j>=yy)
			s=(int(a[i])-48)-(int(b[j])-48)-jin;
	    if(s<0)
		{
			jin=1;
			c[m]=char(s+58);
		}
		else
		{
			jin=0;
			c[m]=char(s+48);
		}
	}
	if(g==1)
	{
		  cout<<"两数相加的结果为:";
	   if(f==0)
	     for(i=0;i<ma+1;i++)
            cout<<c[i];
	   else
	   {
		    cout<<'-';
	    	for(i=0;i<ma+1;i++)
               cout<<c[i];
	   }
	}
	if(g==2)
	{
		cout<<"两数相减的结果为:";
		if(f==0)
			for(i=0;i<ma+1;i++)
				cout<<c[i];
		else
		{
			cout<<'-';
			for(i=0;i<ma+1;i++)
				cout<<c[i];
		}
	}
	cout<<endl;
}
//                                   比较大小函数 
void bijiao(char a[],char b[],int x,int y)
{
    
	int len=0;
	if(a[0]=='-' && b[0]=='-' || a[0]!='-' && b[0]!='-')
	 {
		 if(x>y)
		 {
		    if(a[0]=='-')
				cout<<"数一小于数二"<<endl;
			else
				cout<<"数一大于数二"<<endl;
		 }
		 else if(x==y)
		 { 
		      for(int i=0;i<x;i++)
			  {
				  if(a[0]=='-')
				  {
				      if(a[i]<b[i])
					  {
					     cout<<"数一大于数二"<<endl;
						 break;
					  }
				       else if(a[i]>b[i])
					   {
						   cout<<"数一小于数二"<<endl;
						   break;
					   }
					   else len++;
				  }
				  else
				  {
					  if(a[i]<b[i])
					  {
						  cout<<"数一小于数二"<<endl;
						  break;
					  }
					  else if(a[i]>b[i])
					  {
						  cout<<"数一大于数二"<<endl;
						  break;
					  }
					  else len++;
				  }
			  }
			  if(len==x)
				  cout<<"两数相等!"<<endl;
		 }
		 else if(x<y)
		 {
		    if(a[0]!='-')
				cout<<"数一小于数二"<<endl;
			else
				cout<<"数一大于数二"<<endl; 
		 }
	}
	if(a[0]=='-' && b[0]!='-')
		cout<<"6数一小于数二!"<<endl;
	if(a[0]!='-' && b[0]=='-')
		cout<<"数一大于数二!"<<endl;
}
//                                  乘法函数
void chen(char a[],char b[])
{
	cout<<"两数想乘的结果为:";
	cout<<double(atof(a))*double(atof(b))<<endl;
}
void chu(char a[],char b[])
{
	cout<<"两数想除的结果为:";
    cout<<double(atof(a))/double(atof(b))<<endl;
}
void yu(char a[],char b[])
{
	cout<<"数一除数二的余数为:";
	cout<<atoi(a)%atoi(b)<<endl;
}
//                                   主函数
void main()
{
	char a[100];
	char b[100];
	char yn;
	int  f,d;
	int x,y;
	out();
    	cout<<"          输入第一个大数:";
	    cin>>a;
		cout<<"          输入第二个大数:";
    	cin>>b;
		
 while(1)
 {  	cout<<"(1:加法 2:减法 3:比较 4:乘法 5:除法 6:求余)请选择:";
		cin>>g;
        x=strlen(a);
	    y=strlen(b);
	if(a[0]=='-' && b[0]=='-' && g==1)
	{
		 f=1;
		 d=3;
	  add(a,b,x,y,f,d);
	}
	if(a[0]!='-' && b[0]!='-' && g==1)
	{
		 f=0;
		 d=0;
	  add(a,b,x,y,f,d);
	}
	if(a[0]=='-' && b[0]!='-' && g==1)
	{
		if(x-1>y)
		{
			f=1;
			d=1;
			jian(a,b,x,y,f,d);
		}
		if(x-1==y)
		{
			for(int i=0;i<x-2;i++)
			{
				if(a[i+1]>b[i])
				{
			     	f=1;
					d=1;
				    jian(a,b,x,y,f,d);
				    break;
				}
		      	if(a[i+1]<b[i])
				{
				    f=0;
				d=2;
				    jian(b,a,y,x,f,d);
				    break;
				}
			}
		}
		if(x-1<y)
		{
			f=0;
			d=2;
			jian(b,a,y,x,f,d);
		}
	}
	if(a[0]!='-' && b[0]=='-' && g==1)
    {
		if(x>y-1)
		{
			f=0;
			d=2;
			jian(a,b,x,y,f,d);
		}
		if(x==y-1)
		{
			for(int i=0;i<x;i++)
			{
				if(a[i]>b[i+1])
				{
					f=0;
					d=2;
					jian(a,b,x,y,f,d);
				    break;
				}
				if(a[i]<b[i+1])
				{
					f=1;
					d=1;
					jian(b,a,y,x,f,d);
				    break;
				}
			}
		}
    	if(x<y-1)
		{
			f=1;
			d=1;
			jian(b,a,y,x,f,d);
		}
	}
	if(a[0]=='-' && b[0]=='-' && g==2)
	{
		if(x>y)
		{
			f=1;
			d=1;
			jian(a,b,x,y,f,d);
		}
		if(x==y)
		{
			for(int i=1;i<x;i++)
			{
				if(a[i]>b[i])
				{
					f=1;
					d=1;
					jian(a,b,x,y,f,d);
				    break;
				}
				if(a[i]<b[i])
				{
					f=0;
					d=2;
					jian(b,a,y,x,f,d);
					break;
				}
			}
		}
		if(x<y)
		{
			f=0;
			d=2;
			jian(b,a,y,x,f,d);
		}
	}
	if(a[0]!='-' && b[0]!='-' && g==2)
	{
		if(x>y)
		{
			f=0;
			d=0;
			jian(a,b,x,y,f,d);
		}
		if(x==y)
		{
			for(int i=0;i<x;i++)
			{
				if(a[i]>b[i])
				{
					f=0;
					d=0;
					jian(a,b,x,y,f,d);
					break;
				}
				if(a[i]<b[i])
				{
					f=1;
					d=0;
					jian(b,a,y,x,f,d);
					break;
				}
			}
		}
		if(x<y)
		{
			f=1;
			d=0;
			jian(b,a,y,x,f,d);
		}
	}
	if(a[0]!='-' && b[0]=='-' && g==2)
	{
		f=0;
		d=2;
		add(a,b,x,y,f,d);
	}
	if(a[0]=='-' && b[0]!='-' && g==2)
	{
		f=1;
		d=1;
		add(a,b,x,y,f,d);
	}
	if(g==3)
	{
		bijiao(a,b,x,y);
	}
	if(g==4)
	    chen(a,b);
	if(g==5)
		chu(a,b);
	if(g==6)
		yu(a,b);
	cout<<"是否运行其它算法?(Y/N)";
	cin>>yn;
	if(yn!='Y' && yn!='y')
		break;
	}
}

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -