亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? large.cpp

?? 大數的加減乘除運算
?? CPP
字號:
/* * Name:	 large.cpp * Date:     2009-02-20 * Function: 給定一些整數(其位數可能上百位),對其可完成加、減、乘和整除運算。	輸入描述     	輸入若干組數據,每組數據由一個運算符(+,-,*,/)和兩個整數構成,整數的范圍在(-10^150~10^150),如果遇到符號"@",則輸入結束。	輸出描述 	對于輸入的每組數據,輸出其運算序號和運算結果,每個結果獨占一行; 	如果計算結果超200位,則輸出"Too Large Number."; 	如果運算符不是上述四種之一,則輸出"Illegal Operator."; 	如果除0,則輸出"Divide By Zero."。  輸入樣本	/	100 0	*	12345678901234567890 54321	*	12 21	@	"	輸出樣本	1 Divide By Zero.	2 670629623593962962352690	3 252* CopyRight: 電控  * Modify: */#include <iostream.h>#include <stdlib.h>#include <string.h>#define  MAXLENGTH   512#define  RESULTLENGTH 512#define  MAXPAIR    256char *sub(char *num1,char *num2);char *add(char *num1,char *num2);char *mul(char *num1,char *num2);char *div(char *num1,char *num2);void  clearZero(char *r); //清除字符串前0void  DelFlag(char *r) ; //刪除字符串前面的負號char * AddFlag(char *r) ;//加負號
int cmp(char *r,char *t);//比較兩個字串 int main(int argc,char **argv){	char flag; //符號	char *num1;	char *num2;	char *result[MAXPAIR];	int t = 0;	num1 = (char*)malloc(MAXLENGTH * sizeof(char));	if(num1 == NULL)	{		cout << "內存分配失敗"<<endl;		return -1;	}	num2 = (char*)malloc(MAXLENGTH * sizeof(char)) ;	if(num2 == NULL)	{		cout << "內存分配失敗"<<endl;		return -1;	}	cout <<" 輸入樣本 :"<<endl;	while(1)	{		cin >> flag;		if(flag == '@')		{			break;		}		result[t] = (char*)malloc(2*MAXLENGTH * sizeof(char));		if(result[t] == NULL)		{			cout << "內存分配失敗"<<endl;			return -1;		}
		for(int i = 0 ;i<2*MAXLENGTH ;i++)
		{
			result[t][i] = '\0';
		}		cin >> num1;		cin >> num2; 		switch(flag)		{			case '-':				{					strcpy(result[t], sub(num1,num2));				}				break;			case '+':				{					strcpy(result[t], add(num1,num2));				}				break;			case '*':			{				strcpy(result[t],mul(num1,num2)) ;				 			}			break;			case '/':			{				strcpy(result[t], div(num1,num2));			}			break;			default :			{				strcpy(result[t],"Illegal Operator");			}
			break;					}		++t;	}	cout << "輸出結果:"<<endl;	for (int i = 0; i < t; i++)	{		cout << i+1<<"\t"<<result[i]<<endl;	}
	free(num1);
	free(num2);
	for(i = 0; i < t; i++)
	{
		free(result[i]) ;
	}	return 0;}////////////數組前清零//////////////////////////////////////////////////////////////void  clearZero(char *r){	int lr;  	int i=0, j; 	lr=strlen(r);  	while(r[i] == '0') 	{		++i;	}	if(i > 0) 	{		for(j = 0; j < lr-i; ++j)		{			r[j] = r[j+i];		}		for(j = lr-i; j < lr; ++j) 		{			 r[j] = '\0'; 		}			}		 if(r[0] == '\0')	 {		  r[0] = '0';	 } }//////////////刪除符號////////////////////////////////////////////////////////////void  DelFlag(char *r)  //刪除字符串前面的負號{	int lr;	lr = strlen(r) ;	int i  ;	for(i = 0;i<lr-1;i++)	{		r[i] = r[i+1];	}	r[lr-1] = '\0' ;}///////////增加符號///////////////////////////////////////////////////////////////char * AddFlag(char *r) //加負號{	int lr ;	lr = strlen(r) ;	char *p = (char*)malloc((lr+1)*sizeof(char));	if(p == NULL)	{		cout << "內存分配出錯"<<endl ;		exit(0) ;	}
	memset(p,'\0',lr+1);	p[0] = '-' ;	strcat(p,r) ;	return p ;}//////////////////乘法////////////////////////////////////////////////////////char *mul(char *num1,char *num2){	char *temp ; //存結果
	char c = '0' ; //暫存符號num1
	char d = '0'; //暫存符號num2	int i,j; 	int len1 = strlen(num1);  	int len2 = strlen(num2);	temp = (char*)malloc((RESULTLENGTH)*sizeof(char));	if(temp == NULL)	{		cout << "內存分配出錯"<<endl;		exit(-1) ;	}	//初始化結果數組	for(i = 0 ;i<len1+len2;i++)	{		temp[i] = '0' ;	}	temp[i] = '\0' ;	c = num1[0] ;
	d = num2[0];	if(c == '-')	{		DelFlag(num1);
		len1 = strlen(num1);	}	if(d == '-')	{			DelFlag(num2);
		len2 = strlen(num2);	}	int  carry = 0; //進位初時設為0 	int h ;	for(i=len1-1; i>=0; --i) 	{ 		carry = 0; 		for(j=len2-1; j>=0; --j) 		{ 			int lp = i+j+1;			h = (num1[i] - '0')*(num2[j] - '0')+(temp[i+j+1] - '0') + carry; //x - '0' 將字符轉化為數字 						carry = h / 10 ;			h = h %10 ;			temp[i+j+1] = h+'0';		} 
		if(carry > 0)
		{
			temp[i+j+1] = carry + '0' ;
		}	} 	
	clearZero(temp) ;
	if((c == '-'&&d != '-' ) || (c != '-' &&d == '-'))	{
		int len = strlen(temp);
		temp[len-1] = '\0';		strcpy (temp,AddFlag(temp));
			}
	else if (c == '-' && d == '-')
	{
		int len = strlen(temp);
		temp[len-2] = '\0';

	}
	int len = strlen(temp) ; //計算結果位數
	if(len > 200)
	{
		strcpy(temp,"Too Large Number.");
		return temp;
	}
	else
	{		return temp;
	}}

//////////////加法 //////////////////////////////////////////////////////////


char *add(char *num1,char *num2)
{
	int len1;
	int len2;
	int mid; //交換用
	int carry = 0;//進位 
	char *result;
	char *p ;
	int temp;
	char tt;

	len1 = strlen(num1);
	len2 = strlen(num2);

	result = (char*)malloc((len1+len2)*sizeof(char));
	if( result == NULL)
	{
		cout << "分配內存錯誤 "<<endl;
		exit(-1);
	}
	for(int m = 0 ;m < len1+len2; m++)
	{
		result[m] = '0' ;
	}
	result[m] = '\0' ;
	char c,d;
	c = num1[0];
	d = num2[0];
	if((c == '-') && (d!= '-'))
	{
		DelFlag(num1);
		return(sub(num2,num1)); ////直接調用減法
	}
	if((d == '-')&&(c != '-'))
	{
		DelFlag(num2);
		return (sub(num1,num2)); //直接調用減法
	}
	if((c == '-')&&(d == '-'))
	{
		DelFlag(num1);
		DelFlag(num2);
		strcpy (result,AddFlag(add(num1,num2))); //遞歸調用 
	}
	else
	{
		//如果第一個數字長度比第2個大  ,交換兩個字串  
		if(len2 > len1)
		{
			p = num1;  
			num1 = num2 ;
			num2 = p;
			mid = len1;
			len1 = len2;
			len2 = mid ;
		}
		int i;
		for(i=0; i<len1; ++i) 
		{ 
			mid = num1[len1-i-1] -'0' + num2[len2-i-1] -'0' + carry; 
			if(mid > 9) 
			{ 
				carry = 1;
				mid = mid - 10; 
			} 
			else 
			{
				carry = 0;
			}
			result[i] = mid + '0';  
		} 
		for(i = len2; i < len1; ++i) 
		{ 
			mid = num1[len1-i-1] - '0' + carry; 
			if(mid > 9) 
			{ 
				carry = 1; 
				mid = mid - 10; 
			} 
			else 
			{
				carry = 0;
			}
			result[i] = '0' + mid;  
		} 
		if(carry > 0) 
		{ 
			 result[i] = carry + '0'; 
			 temp = i; 
		} 
		else 
		{
			temp = i - 1;
		}
		for(i = temp + 1; i < len1 + 2; ++i) 
        {
			result[i]='\0';
		}
		for(i=0; i<(temp+1)/2; ++i) 
		{ 
			tt = result[i]; 
			result[i] = result[temp-i]; 
			result[temp-i] = tt; 
		} 
	}
	int len = strlen(result) ;
	if(len > 200)
	{
		strcpy(result,"Too Large Number.");
		return result;
	}
	else
	{
		return result;
	}
	
}

////////減法/////////////////////////////////


char *sub(char *num1,char *num2)
{
	int len1;
	int len2;
	int mid;
	int carry = 0;
	int flag = 0; //大小標志 
	char c,d;//暫存符號
	char hc;
	len1 = strlen(num1);
	len2 = strlen(num2);
	char *p; //交換字符串
	char *result ;
	result = (char*)malloc((len1+len2)*sizeof(char));
	if(result == NULL)
	{
		cout << "內存分配失敗"<<endl ;
		exit(-1);
	}
    //清空result
	for(int m = 0 ;m < len1+len2; m++)
	{
		result[m] = '0' ;
	}
	result[m] = '\0' ;

	c = num1[0];
	d = num2[0];
	if(c == '-' && d != '-')
	{
		strcpy(num2,AddFlag(num2));
		strcpy (result,(add(num1,num2))); //調用 加法 并在結果加負號
		return result;
	}
	if(c != '-' && d == '-')
	{
		DelFlag(num2);
		strcpy (result,add(num1,num2));  //變為加
		return result;
	}
	if(c == '-' && d == '-')
	{
		DelFlag(num2);
		return (add(num2,num1));//遞歸調用,num2 - num1 為結果
	}
	else
	{	
		if(cmp(num1,num2) < 0)
		{	
			flag = 0xff;
			p = num1;
			num1 = num2;
			num2 = p;
			mid = len1;
			len1 = len2 ;
			len2 = mid;
		}
		int i;
		for(i=0; i<len2; ++i) 
		{
			mid = num1[len1-i-1] - num2[len2-i-1] - carry; 
			if(mid < 0) 
			{
				carry = 1; 
				mid = mid + 10;
			} 
			else 
			{
				carry = 0; 
			}
			result[i] = mid + '0';
		    hc = mid + '0';
		} 
		for (i=len2; i<len1; ++i) 
		{ 
			mid = num1[len1-i-1] - '0' - carry;
			if(mid < 0) 
			{
				carry = 1; 
				mid += 10; 
			} 
			else 
            {
				carry = 0;
			}
			 result[i] = '0' + mid; 
			hc = '0' + mid;
		}
		int temp ;
		result[i] = '\0';
		temp = i-1;
		while(result[temp] == '0' && temp != 0)
		{
			result[temp] = '\0';
			temp--; 
		}

		for(i=0; i<(temp+1)/2; ++i) 
	    { 
			hc = result[i]; 
			result[i] = result[temp-i]; 
			result[temp-i] = hc; 
		} 

	}
	int len = strlen(result) ;
	if(len > 200)
	{
		strcpy(result,"Too Large Number.");
		return result;
	}
	else
	{
		if(flag == 0xff)
		{
			strcpy(result,AddFlag(result));
		}
		return result;
	}
}

///////////////整除///////////////////char *div(char *num1,char *num2)
{
	char *result;
	char *remain;
	int len1;
	int len2;
	len1 = strlen(num1);
	len2 = strlen(num2);
	char c,d;//暫存符號
	result = (char*)malloc((len1+len2)*sizeof(char));
	if(result == NULL)
	{
		cout << "內存分配失敗 "<<endl;
		exit(-1);
	}

	for(int m = 0 ;m < len1+len2; m++)
	{
		result[m] = '\0' ;
	}

	remain = (char*)malloc((len1+len2)*sizeof(char));
	if(remain == NULL)
	{
		cout << "內存分配失敗 "<<endl;
		exit(-1);
	}

	for(m = 0 ;m < len1+len2; m++)
	{
		remain[m] = '\0' ;
	}

	c = num1[0];
	d = num2[0];

	if(d != '-')
	{
		clearZero(num2);
		if(num2[0] == '0') //判斷除數 0
		{
			strcpy(result,"Divide By Zero.");
			free(remain);
			return result;
		}
	}
	if(d == '-')
	{
		DelFlag(num2);
		
		if(num2[0] == '0') 
		{
			strcpy(result,"Divide By Zero.");
			free(remain);
			return result;
		}
	}
	if(c == '-')
	{
		DelFlag(num1);
	}
	
	int i ;
	int temp;
	int remainlength ;
	if(cmp(num1,num2) < 0)
	{
		strcpy(result,"0");
		free(remain);
		return result;
	}
	for(i=0; i < len1; ++i) 
    { 
	   clearZero(remain);
	   remainlength = strlen(remain);
	   remain[remainlength] = num1[i];
	   remain[remainlength +1 ] = '\0';
       temp = 0; 
	   clearZero(num2);
	   clearZero(remain);
       while(cmp(remain,num2) >= 0) 
       { 
		   if(remain[0] == '-')
		   {
			   break;
		   }
            strcpy(remain,sub(remain, num2)); 
            ++temp; 
       } 
        result[i] = temp + '0'; 
    }  
	
    clearZero(result);
	int len;
	if((c == '-'&& d != '-') || (c != '-' && d == '-'))
	{
		strcpy(result,AddFlag(result));
		free(remain);
		len = strlen(result);
		if(len > 200)
		{
			strcpy(result,"Too Large Number.");
			return result;
		}
		else
		{
			return result;
		}
	}
	else
	{
		free(remain);
		if(len > 200)
		{
			strcpy(result,"Too Large Number.");
			return result;
		}
		else
		{
			return result;
		}
	}

}

//比較兩字串 大小
int cmp(char *r,char *t)
{
	int lenr;
	int lent;
	lenr = strlen(r);
	lent = strlen(t);
	if(lenr > lent )
	{
		return 1;

	}
	else if(lenr < lent)
	{
		return -1;
	}
	else
	{
		return (strcmp(r,t));
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美va欧美不卡在线| 丝瓜av网站精品一区二区| 亚洲一区二区三区在线看| 日韩激情视频在线观看| 成人h动漫精品一区二| 欧美精品黑人性xxxx| 国产精品美女久久久久高潮| 蜜臀精品一区二区三区在线观看| 91日韩一区二区三区| 国产欧美日韩不卡| 精品中文字幕一区二区| 欧美日韩国产美| 亚洲黄色性网站| 成人av免费在线| 国产亚洲欧美日韩在线一区| 久久精品国产色蜜蜜麻豆| 欧美日韩一区成人| 亚洲裸体xxx| 91在线精品一区二区三区| 国产喂奶挤奶一区二区三区| 免费久久99精品国产| 3751色影院一区二区三区| 亚洲尤物在线视频观看| 日本高清不卡视频| 亚洲天堂av老司机| 972aa.com艺术欧美| 国产精品妹子av| av中文字幕亚洲| 中文字幕一区二区在线播放 | 亚洲自拍偷拍欧美| 色婷婷av一区| 亚洲亚洲精品在线观看| 在线视频一区二区三区| 亚洲黄色片在线观看| 91久久精品国产91性色tv| 亚洲人被黑人高潮完整版| 91麻豆.com| 一区二区高清视频在线观看| 91麻豆高清视频| 亚洲一区二区三区国产| 欧美日韩一区在线观看| 日本欧美一区二区三区乱码| 欧美一区二区三区小说| 久久精品国产精品亚洲精品| 精品久久久久久久久久久久久久久| 久久成人免费网站| 久久久一区二区| 成人h精品动漫一区二区三区| 中日韩免费视频中文字幕| 9人人澡人人爽人人精品| 亚洲免费av在线| 91精品久久久久久久91蜜桃| 精品一区二区三区视频| 国产日韩v精品一区二区| 色综合色狠狠天天综合色| 亚洲成人一二三| 精品国产免费久久| 99视频在线精品| 亚洲高清免费观看高清完整版在线观看| 欧美挠脚心视频网站| 国产在线不卡视频| 亚洲另类一区二区| 日韩一区二区在线观看| 国产成人精品网址| 亚洲永久免费视频| 久久亚洲一级片| 日本道精品一区二区三区| 日本不卡不码高清免费观看| 欧美国产激情一区二区三区蜜月| 在线视频国内自拍亚洲视频| 美腿丝袜亚洲色图| 亚洲日本va午夜在线电影| 91精品国产入口| 成人va在线观看| 麻豆成人免费电影| 国产精品动漫网站| 欧美不卡123| 色综合天天综合网国产成人综合天 | 三级久久三级久久久| 国产清纯白嫩初高生在线观看91 | av色综合久久天堂av综合| 性感美女极品91精品| 中文av字幕一区| 欧美一区二区三区啪啪| 99精品桃花视频在线观看| 麻豆一区二区三| 亚洲国产精品久久久久婷婷884 | 欧美成人精品1314www| 91福利小视频| 成人app网站| 久久国内精品视频| 婷婷亚洲久悠悠色悠在线播放 | 午夜久久久久久久久久一区二区| 久久久久久麻豆| 精品国产91洋老外米糕| 欧美在线观看视频在线| av动漫一区二区| 国产精品18久久久久| 久久综合综合久久综合| 亚洲成人手机在线| 亚洲最新视频在线观看| 综合中文字幕亚洲| 国产精品视频免费看| 欧美高清在线视频| 国产欧美一区二区三区网站| 精品国产91亚洲一区二区三区婷婷| 在线观看日韩高清av| 91免费观看在线| 91在线视频观看| 99精品视频在线观看| thepron国产精品| 成人免费视频app| 成人三级伦理片| av电影在线不卡| 一本久道中文字幕精品亚洲嫩 | 粉嫩aⅴ一区二区三区四区五区| 久久99精品国产麻豆不卡| 欧美aaa在线| 麻豆国产精品一区二区三区| 日本aⅴ精品一区二区三区 | caoporn国产精品| 成人动漫在线一区| 91性感美女视频| 欧美三级在线视频| 欧美精品日日鲁夜夜添| 精品国产乱码久久久久久影片| 精品国产伦一区二区三区观看方式| 欧美成人bangbros| 中文字幕久久午夜不卡| 国产精品久久久久影院亚瑟 | 久久久久久久久久久黄色| 欧美激情在线观看视频免费| 欧美国产日本视频| 一区二区三区不卡在线观看| 亚洲一区二区在线观看视频 | 午夜精品福利一区二区三区蜜桃| 日韩电影免费一区| 国产精品一卡二卡在线观看| 国产不卡在线视频| 欧美性一区二区| 欧美精品一区二区三区高清aⅴ| 久久精品一二三| 一区二区三区.www| 麻豆成人91精品二区三区| 东方欧美亚洲色图在线| 欧美在线制服丝袜| 2014亚洲片线观看视频免费| 《视频一区视频二区| 日韩1区2区日韩1区2区| 国产91精品一区二区| 欧美性一区二区| 国产亚洲人成网站| 无吗不卡中文字幕| 丁香六月久久综合狠狠色| 欧美视频自拍偷拍| 日本一区二区三区国色天香| 亚洲一区二区av电影| 国产麻豆精品久久一二三| 色呦呦日韩精品| 2024国产精品视频| 天天影视网天天综合色在线播放 | 精品视频免费在线| 欧美国产精品中文字幕| 视频一区二区中文字幕| 99精品视频一区二区| 日韩精品一区二区三区视频播放 | 欧美揉bbbbb揉bbbbb| 欧美国产精品v| 免费成人在线播放| 91免费看片在线观看| 久久久久久久久久久久久女国产乱| 亚洲国产视频直播| av激情成人网| 久久久一区二区三区| 青青草国产精品97视觉盛宴| 91小视频在线观看| 国产精品三级av| 精品系列免费在线观看| 欧美女孩性生活视频| 亚洲最快最全在线视频| 99国产精品久久久久久久久久| 国产午夜精品在线观看| 日本不卡在线视频| 欧美三级三级三级| 亚洲综合无码一区二区| 色综合中文字幕| 成人欧美一区二区三区白人| 国产v综合v亚洲欧| 2024国产精品| 国产精品一区二区x88av| 日韩一区二区在线播放| 视频一区二区中文字幕| 欧美系列一区二区| 亚洲国产美国国产综合一区二区| 不卡区在线中文字幕| 欧美激情在线一区二区| 成人丝袜视频网| 中文字幕一区二区在线观看| 成人黄色av网站在线| 欧美激情中文不卡|