| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1015 人关注过本帖
标题:[求助]算法问题(感谢斑竹,问题已圆满解决)
只看楼主 加入收藏
缘子弹
Rank: 1
等 级:新手上路
帖 子:184
专家分:0
注 册:2007-4-5
收藏
得分:0 
收到!~

2007-07-01 23:44
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
不用谢  

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-07-01 23:47
herbert_1987
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:1314
专家分:0
注 册:2007-5-13
收藏
得分:0 
呵呵 nuciewth 的方法不错,又增长见识了.

人生重要的不是所站的位置,而是所朝的方向
2007-07-01 23:48
herbert_1987
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:1314
专家分:0
注 册:2007-5-13
收藏
得分:0 
以下是引用I喜欢c在2007-7-1 23:47:54的发言:
不用谢

谁向你道谢了


人生重要的不是所站的位置,而是所朝的方向
2007-07-01 23:50
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-07-01 23:51
缘子弹
Rank: 1
等 级:新手上路
帖 子:184
专家分:0
注 册:2007-4-5
收藏
得分:0 

哈哈


2007-07-01 23:59
shixiaokun86
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-5-26
收藏
得分:0 
明白了,好方法阿~~~~~~~
确实长见识阿~~~

2007-07-02 01:36
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

转载个除的程序.以前自己写的四则运算,被格盘弄掉了.思想就是模拟手算.

#include<stdio.h>
#include<string.h>
#define N 1001
int compare(char * c1,int s1,int e1,char *c2,int s2,int e2)/*大整数比较大小*/
{
while(c1[s1]=='0'&&s1<e1)s1++;
while(c2[s2]=='0'&&s2<e2)s2++;
if(e1-s1>e2-s2)return 1;
if(e1-s1<e2-s2)return -1;
int i1;int f11=0;
for(i1=0;i1<=e1-s1;i1++)
{
if(c1[s1+i1]>c2[s2+i1]){f11=1;break;}
if(c2[s2+i1]>c1[s1+i1])break;
}
if(i1>e1-s1)return 0;
if(f11)return 1;
return -1;
}
void sub(char *c1,int l1,char *c2,int n,int l)/*两个大整数相减,结果放在c1中*/
{
int fig=0;
if(l1>l)
{
fig=1;
int i5;
for(i5=l;i5>0;i5--)
c2[i5]=c2[i5-1];
c2[0]='0';l++;
}
int jw=0;
int i4;
char tc[N];
for(i4=l-1;i4>=0;i4--)
{
tc[i4]=((c2[i4]-48)*n+jw)%10+48;
jw=((c2[i4]-48)*n+jw)/10;
}
jw=0;
for(i4=l-1;i4>=0;i4--)
{
int ttt=jw;
if(c1[i4]-tc[i4]-jw>=0)
{
tc[i4]=c1[i4]-tc[i4]-jw+48;
jw=0;
}
else
{

jw=(tc[i4]-c1[i4]+jw);
if(jw%10==0)jw/=10;
else jw=jw/10+1;
tc[i4]=jw*10+c1[i4]-tc[i4]-ttt+48;
}
}
if(fig)
{
for(i4=0;i4<l-1;i4++)c2[i4]=c2[i4+1];
l--;
c2[l]='\0';
}
tc[l1]='\0';
for(i4=0;i4<=l1;i4++)
c1[i4]=tc[i4];
}
void high_precise_division(char *c1,char *c2)
{
int len1,len2;
len1=strlen(c1);
len2=strlen(c2);
int i,j,k,ip;
i=0;
while(c1[i]=='0'&&i<len1-1)i++;
for(j=0;i<len1;j++,i++)c1[j]=c1[i];
len1=j;c1[j]='\0';
i=0;
while(c2[i]=='0'&&i<len2-1)i++;
for(j=0;i<len2;j++,i++)c2[j]=c2[i];
len2=j;c2[j]='\0';
/*while(c1[0]=='0'&&i<len1-1)
{
for(k=0;k<len1-1;k++)
c1[k]=c1[k+1];
len1--;
}去掉前面的0*/
/*while(c2[0]=='0'&&j<len2-1)
{
for(k=0;k<len2-1;k++)
c2[k]=c2[k+1];
len2--;
}去掉前面的0*/
c1[len1]='\0';
c2[len2]='\0';
if(strcmp(c2,"0")==0)return ;/*当除数为0时*/
if(strcmp(c1,"0")==0){strcpy(c2,"0");return ;}/*当被除数为0时*/
if(len1<len2||len1==len2&&compare(c1,0,len1-1,c2,0,len2-1)<0)
{
strcpy(c2,c1);
c1[0]='0';c1[1]='\0';
return ;
}
else
{
ip=0;
char product[N],*pr;/*部分积*/
pr=product;
for(ip=0;ip<len2-1;ip++)
pr[ip]=c1[ip];
for(i=0;i<=len1-len2;i++)
{
pr[ip++]=c1[len2-1+i];
if(ip>=len2&&compare(pr,0,ip-1,c2,0,len2-1)>=0)
{
char tc[N];
for(j=1;j<=9;j++)
{
for(k=0;k<ip;k++)tc[k]=pr[k];
sub(tc,ip,c2,j,len2);/*pr-c2*j结果放在pr中*/
for(k=0;tc[k]!='\0';k++);
if(compare(tc,0,k-1,c2,0,len2-1)<0)
break;
}
strcpy(pr,tc);
ip=strlen(pr);
c1[i]=j+48;
while(pr[0]=='0'&&ip>1)
{
for(j=0;j<ip-1;j++)
pr[j]=pr[j+1];
ip--;
}
if(ip==1&&pr[0]=='0')ip--;
}
else c1[i]='0';
}
while(c1[0]=='0')
{
for(j=0;j<i-1;j++)
c1[j]=c1[j+1];
i--;
}
c1[i]='\0';
if(ip==0){pr[0]='0';pr[1]='\0';ip=1;}
else
{
while(pr[0]=='0'&&ip>1)
{
for(j=0;j<ip-1;j++)pr[j]=pr[j+1];
ip--;
}
}
for(j=0;j<ip;j++)
c2[j]=pr[j];
c2[ip]='\0';
return ;
}
}
int main()
{
int i,j;
char c1[N],c2[N];/*整数高精度除法*/
while(scanf("%s %s",c1,c2)!=EOF)
{
char *pc1,*pc2;
pc1=c1;pc2=c2;
c1[strlen(c1)]='\0';
c2[strlen(c2)]='\0';
high_precise_division(pc1,pc2);/*结果放在pC1中,余数放在pC2中*/
printf(" 商:%s\n余数:%s\n",pc1,pc2);
}
return 0;
}


倚天照海花无数,流水高山心自知。
2007-07-03 14:29
快速回复:[求助]算法问题(感谢斑竹,问题已圆满解决)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015035 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved