| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 562 人关注过本帖
标题:实在没办法了 只好贴全代码上来了!为什么就是通不过呢。。
只看楼主 加入收藏
song_gpqg
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-3-16
收藏
 问题点数:0 回复次数:6 
实在没办法了 只好贴全代码上来了!为什么就是通不过呢。。

题目是求几个100位以内的数的加法,遇到0结束,输出结果
测试了几组数都可以,可是在POJ上就是通不过。。不知道为什么。。
我写的太混乱了。。谢谢各位的耐心。。

#include<iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
char a[100][101];
int b[102];
int i=0,n,q=0,m,j,len=0,lenm;//q进位

for(m=0;m<102;m++) b[m]=0;
for(m=0;m<100;m++)
for(j=0;j<102;j++) a[m][j]='0';
do
{
scanf("%s" ,a[i]);
i++;
}while(strcmp(a[i-1],"0")!=0 );//读入

for(m=0;m<i;m++)
{
if(len<=strlen(a[m])) len=strlen(a[m]);//找所有串里最大的长度
}
for(j=0;j<len;j++)
{

for (n=0;n<i;n++)
{ lenm=strlen(a[n]);
lenm--;

b[j]=a[n][lenm-j]-'0'+b[j];}//把每个二维数组对应的位相加

b[j]+=q;//加上进位
q=(b[j])/10;//算出进位
b[j]=b[j]%10;
}
j--;b[j]=b[j]+q*10; //求首位进位后的结果
int h=101;while(b[h]==0) h--;
for(i=h;i>=0;i--) cout<<b[i];//倒序输出
cout<<endl;

return 0;
}


[此贴子已经被作者于2007-3-16 23:12:38编辑过]

搜索更多相关主题的帖子: 办法 代码 
2007-03-16 23:00
song_gpqg
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-3-16
收藏
得分:0 

汗我的程序。。下面的数比上面的长就不行

贴个别人的很好的给大家看一下吧。。

#include<iostream>
#include<cstring>
using namespace std;

void main()
{
char st[150];
int a[150],b[150],i,t;
for (i=1;i<150;i++)
{
a[i]=0;
b[i]=0;
}
while (cin>>st)
{
for (i=1;i<150;i++) a[i]=0;
for (i=1;i<=strlen(st);i++)
a[i]=st[strlen(st)-i]-'0';
t=0;
for (i=1;i<150;i++)
{
b[i]=t+b[i]+a[i];
t=b[i]/10;
b[i]=b[i]%10;
}
}
t=149;
while (b[t]==0) t--;
for (i=t;i>0;i--) cout<<b[i];
cout<<endl;
}


奋战C++的超级大菜鸟 准备告别物理,进计算机系!
2007-03-16 23:37
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 

自己比较一下OKAY


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2007-03-17 00:41
husai
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-12-14
收藏
得分:0 

这个题目很不清晰的说,100以内的数相加干吗要以字符的形式输入呢?

2007-03-17 09:07
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

for(j=0;j<len;j++)
{
for (n=0;n<i;n++)
{
// lenm=strlen(a[n]);
// lenm--;
// b[j]=a[n][lenm-j]-'0'+b[j];
//问题在这个地方,设想一下:12,123两个数,len=3,当j=2时,lenm=2时,lenm--后lenm==1,1-2==-1所以a[-1]有问题咯
//改一下就好了:
char add='0';
lenm=strlen(a[n])-1;
if(lenm>=j)
x=a[n][lenm-j];
b[j]+=(x-'0');
}//把每个二维数组对应的位相加
b[j]+=q;//加上进位
q=(b[j])/10;//算出进位
b[j]=b[j]%10;
}


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-03-17 13:12
song_gpqg
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-3-16
收藏
得分:0 
是100位。。

谢谢楼上!!

奋战C++的超级大菜鸟 准备告别物理,进计算机系!
2007-03-18 01:06
song_gpqg
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-3-16
收藏
得分:0 
回复:(wfpb)for(j=0;j
再次感谢!终于通过了!!

奋战C++的超级大菜鸟 准备告别物理,进计算机系!
2007-03-18 12:52
快速回复:实在没办法了 只好贴全代码上来了!为什么就是通不过呢。。
数据加载中...
 
   



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

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