| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1811 人关注过本帖
标题:[求助](未解决)for语句循环问题
只看楼主 加入收藏
ecbtnrt
Rank: 1
等 级:新手上路
威 望:1
帖 子:189
专家分:0
注 册:2006-4-16
收藏
 问题点数:0 回复次数:10 
[求助](未解决)for语句循环问题

输入十个数,求出不同相同数的个数,及其个数的多少
#include <iostream.h>

const int N = 10;
void main()
{
struct
{
int num;
int tim;
}R[N];
int i;
int ar[N];
cout << "please input ten numbers : ";
for(i=0; i<N; i++)
cin >> ar[i];

R[0].num = ar[0];
R[0].tim = 1;
int j;
int t = 0;
int m;
for(i=1; i<N; i++)
{
for(j=0; j<=t; j++)
if(R[j].num = ar[i])
R[j].tim ++;
else //错误
{
t ++;
R[t].num = ar[i];
R[t].tim = 1;
m = t;
}
}
for(i=0; i<m; i++)
cout << R[i].num << " " << R[i].tim << endl;
}

这个题目的t是错误的,请指出如何在运行完if后结束

[此贴子已经被作者于2006-9-21 20:22:21编辑过]

搜索更多相关主题的帖子: int 语句 tim num 
2006-09-20 21:02
ecbtnrt
Rank: 1
等 级:新手上路
威 望:1
帖 子:189
专家分:0
注 册:2006-4-16
收藏
得分:0 

我的思路是这样的:把数组中的十个数依次与前面的储存在要输出的结构体数组里面,如果前面没有这个数,就是结构体数组的下标加1把这个数储存上,另次数等于1,如果有了,只让这个数出现的次数加1;算法是没有错误的,当然可能有更好的算法。


我为你痴,为你狂!
2006-09-20 22:54
mohun198483
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-7-11
收藏
得分:0 
不大明白,什么叫不同相同数
2006-09-20 23:20
ecbtnrt
Rank: 1
等 级:新手上路
威 望:1
帖 子:189
专家分:0
注 册:2006-4-16
收藏
得分:0 

我把题目说清楚些,可能不说的不是很清楚。
输入10个int型数,求出其中互不相同数个个数num,以及此num个数中的每一个数出现的次数!

不知道 人们是不是对我的这一问题不屑一顾 啊,什么的,我想应该不是很困难啊,算法都写出来了,只需要改一下for循环就可以了!


我为你痴,为你狂!
2006-09-21 10:25
mohun198483
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-7-11
收藏
得分:0 
提示一点,你的
for(i=1; i<N; i++)
{
for(j=0; j<=t; j++)
if(R[j].num = ar[i]) //这里是不是有点问题,是判断相等?你的操作是赋值。
R[j].tim ++;
else
{
t ++;
R[t].num = ar[i];
R[t].tim = 1;
m = t;
}
}
2006-09-21 14:36
吴亮
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2006-9-16
收藏
得分:0 

楼上的好仔细啊,可能就是这里出错了,少了一个等于好,如果是赋值它不会往下走了,一直都是循环R[j].tim++

2006-09-21 19:26
ecbtnrt
Rank: 1
等 级:新手上路
威 望:1
帖 子:189
专家分:0
注 册:2006-4-16
收藏
得分:0 

的确看的很仔细是的应该该为if(R[j].num == ar[i]) 但是仍然不行,能不能把这个程序你烤下去运行一下,我认为你自己写一个最好。
这道题就是给10个数,找出其中有多少个不同的数,并且计算出同一个数出现了几次。

方法:

数组第一个数储存起来,并把它出现的次数赋值为1,然后把后面的数依次与前面的比较,如果相同数出现的次数就加1,如果第一次出现就把它存储起来,并把出现的次数记为1;

在这主要涉及到循环的问题,如何循环是关键,因为用到的变量太多,我想用goto语句,但不是很好用。


我为你痴,为你狂!
2006-09-21 20:34
ecbtnrt
Rank: 1
等 级:新手上路
威 望:1
帖 子:189
专家分:0
注 册:2006-4-16
收藏
得分:0 
这道题应该不是很困难吧,我想还是自己解决好了,说不定又犯了一些傻傻的小问题。唉!

我为你痴,为你狂!
2006-09-21 20:36
ecbtnrt
Rank: 1
等 级:新手上路
威 望:1
帖 子:189
专家分:0
注 册:2006-4-16
收藏
得分:0 

还是用数组解决比较好
# include <iostream.h>
void count(int a[])
{
int i,res[10],n=10,s[10],ss[10],ii=0;
for(i=0;i<9;i++)
{
res[i]=0;
if(a[i]==0) continue;
++res[i];
s[ii]=a[i];
for(int j=i+1;j<10;j++)
{
if(a[i]==a[j])
{
++res[i];
a[j]=0;
}
}
ss[ii++]=res[i];
}
if(a[9]!=0)
{
s[ii]=a[9];
ss[ii++]=1;
}
for(i=0;i<ii;i++)
{
cout<<s[i]<<"\t"<<"出现:";
cout<<ss[i]<<"次"<<endl;
}
}
void main()
{
int a[10],i=0;

while(i<10)
cin>>a[i++];
count(a);

}


我为你痴,为你狂!
2006-10-04 20:20
★红狼
Rank: 2
等 级:论坛游民
帖 子:190
专家分:17
注 册:2006-7-12
收藏
得分:0 
int t = 0; //这里t=0;
int m;
for(i=1; i<N; i++)
{
for(j=0; j<=t; j++) //这里 j<=t;那么这个循环有作用么?

if(R[j].num = =ar[i]) //少个=
R[j].tim ++;
else //错误
{
t ++;
R[t].num = ar[i];
R[t].tim = 1;
m = t;

我学的是C。不是C++。现在正在学C++。可是找了很多就是没C++的编译软件。找了个
Microsoft Visual Studio 2005 不懂怎么搞 项目。
也不知道怎么调。搞了6天了。
2006-10-05 18:37
快速回复:[求助](未解决)for语句循环问题
数据加载中...
 
   



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

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