| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3048 人关注过本帖
标题:我想做一个求平均数的程序,可遇到难题了!望大家指教,新手
只看楼主 加入收藏
jcw08120110
Rank: 8Rank: 8
来 自:南京
等 级:蝙蝠侠
帖 子:272
专家分:742
注 册:2009-6-8
收藏
得分:10 
可以尝试STL 库解决问题~    设置一个向量c; 经过一系列求值;再用for循环(int a=0;a<c.size();a++) total+=c[a]; 至于你说的那个什么用char类型的变量来做循环控制条件;你不觉得char类型能标示的数太少了嘛! 顶多256个嘛~   程序不大 我就帮你写出来了:
程序代码:
#include<iostream>
#include<vector>
using namespace std;
void main()
{
    vector<double> c;//定义浮点向量c;大小为0;
    double d;
    while(cin>>d)  //输入判断条件:只要你输入的是数字就可以继续输入; 
    {
        c.push_back(d); // 向向量尾部添加d;向量就是可以改变大小的数组;
    }
    d=0;
    for(int a=0;a<c.size();++a)d+=c[a];  //c.size();求向量的大小;
    d/=c.size();
    cout<<"平均数是:"<<d;

}

君生我未生 我生君以老
2011-08-23 15:42
xuyu950403
Rank: 1
等 级:新手上路
帖 子:11
专家分:4
注 册:2011-8-17
收藏
得分:0 
谢谢楼上,虽然看不大懂,但是基本思路还是似懂非懂了,谢谢!
2011-08-23 15:46
jcw08120110
Rank: 8Rank: 8
来 自:南京
等 级:蝙蝠侠
帖 子:272
专家分:742
注 册:2009-6-8
收藏
得分:0 
你这个问题难度就是 不知道有多少数据;以及求出数据的长度; 如果用数组的话 定义一个数组 double a[10000]又不实际还浪费空间;定少了怕溢出;很纠结 所以用向量vector很轻易就能克服这2个难题;

君生我未生 我生君以老
2011-08-23 15:56
xg5699
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:140
专家分:522
注 册:2011-7-27
收藏
得分:0 
回复 10楼 xuyu950403
坚持是最好的书本。

都不结贴我郁闷那!
2011-08-23 16:09
sqqg1986
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-8-22
收藏
得分:0 
#include<iostream.h>
int main(){
int a,b=0,sum=0;
char c='n';
do{
cout<<"请输入数字"<<endl;
cin>>a;
sum=sum+a;
b++;
cout<<"请问是否已经输完所有的数字,y为已输完,n为继续输入。"<<endl;
cin>>c;
}while(c=='n');
sum=sum/b;
cout<<"所输入的数字的平均数为"<<sum<<endl;
return 0;
}
本人新手,目前只能做到这样不强大的程序,但愿抛砖引玉,能有高手指点指点。
2011-08-23 16:38
xg5699
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:140
专家分:522
注 册:2011-7-27
收藏
得分:0 
回复 11楼 jcw08120110
STL数据库是在数组和链表之后教的...
我才看到流这里,那家伙连int total=0;都不明白什么意思你和他讲STL...
不过你写的是非常好的


[ 本帖最后由 xg5699 于 2011-8-23 20:07 编辑 ]

都不结贴我郁闷那!
2011-08-23 20:05
xg5699
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:140
专家分:522
注 册:2011-7-27
收藏
得分:0 
回复 12楼 xuyu950403
...

[ 本帖最后由 xg5699 于 2011-8-23 20:19 编辑 ]

都不结贴我郁闷那!
2011-08-23 20:10
羽毛扇
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2011-8-19
收藏
得分:0 
回复 楼主 xuyu950403
char 型到 Int型貌似应该强制类型转换一下
2011-08-23 20:37
hoei5699
Rank: 2
等 级:论坛游民
帖 子:11
专家分:26
注 册:2011-7-24
收藏
得分:0 
《C++ Primer》
2011-08-23 20:53
xg5699
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:140
专家分:522
注 册:2011-7-27
收藏
得分:0 
程序代码:
#define num 100
#include<iostream>
#include<string>
using namespace std;
int main()
{
    int x;float h;
    cout<<"请输入学生的数量,范围不要超过100!"<<endl;
    cin>>x;
  while(x<0||x>99)
  {
      cout<<"输入学生的范围不要超过100!"<<endl;
      cin>>x;
  }
  int a[num], c=0,i;
  for (i=0;i<x;i++)
  {
      cout<<"请输入第"<<i+1<<"名学生的成绩\t";
      cin>>a[i];
      c=c+a[i];
  }

 
  h=(float)c/x;
  cout<<x<<"名学生的平均成绩为\t"<<h<<endl;
  return 0;
}
}
这是很久前我写的,用的是数组,缺点也像11楼说的那样浪费空间和限制,不过链表的诞生就是为 解决数组浪费空间而创建的
接下来演示用链表制作
程序代码:
#include <iostream>
#include<string>
using namespace std;
class labe   //链表类
{
private:
    labe *next;
     double date;
public:
    labe():date(0),next(0){};
    labe(double a):date(a),next(0){};
   ~labe(){delete next;}
    void setnext(labe *a){ next=a;}
    labe* getnext()const{return next;}
    void print2(){cout<<date<<endl;}
    double getDate()const{return date;}
};
class list  //操作类
{
private:
    labe *head;
    int total;
public:
    list():head(0),total(0){}
    ~list(){delete head;}
    void run();
    void print();
    void math();
    //void gettotal(){cout<<total<<endl;}
};
void list::math()
{
       
    if(!head)
    {
        cout<<"程序结束"<<endl;
        return;
    }
    int i=0;
     double Total=0;
    labe *head2=head;
    while(head2)
    {   
       
        Total=Total+head2->getDate();
        head2=head2->getnext();
        i++;
    }
   cout<<"总和为"<<Total<<" 平均数为:"<<(Total/total)<<endl;
}
void list::print()   //为了具体说明链表拥有和数组一样的功能,特意输出了所有输入的数字;和数组的区别是它的优越性可以不受束缚"无限"创建;不用去管他是怎么做的,只管创建就行了.
{
    if(!head)
    {
        cout<<"程序结束"<<endl;
        return;
    }
     labe *head2;
    int i=0;
    head2=head;
    while(head2)
    {
        i++;
        cout<<""<<i<<"个数为:";
        head2->print2();
        head2=head2->getnext();
   }

}
void list::run()
{
    labe *sen2;
    labe *sen;
    double a;

   
    cout<<"请输入一个数字,当不是数字时结束"<<endl;
   
    cin>>a;
     if(a<0||a>9)
    {
        return;
    }
       head=new labe(a);
           total++;
            sen=head;
            string sd;
    while(1)
    {
    cout<<"请输入一个数字;当不是数字时结束"<<endl;
   
    cin>>sd;
    if(sd[0]<'0'||sd[0]>'9')
    {
       
        return;
    }
    a=atof(sd.c_str());
         sen2=new labe(a);
         total++;
         sen->setnext(sen2);
         sen=sen->getnext();
    

    }
}

void main()
{

    list a;
    a.run();
    a.print();
    a.math();
   
}
用链表的优越性大大的加强,不像数组产生多余空间无法定义元素数目的问题,但缺点则是写起来比较复杂(麻烦),由于我还没有看到摸版STL,对11楼的程序表示看不懂
如果想又简单又方便就用11楼的程序(我个人认为大多初学者都不会用STL);


[ 本帖最后由 xg5699 于 2011-8-23 22:52 编辑 ]

都不结贴我郁闷那!
2011-08-23 22:25
快速回复:我想做一个求平均数的程序,可遇到难题了!望大家指教,新手
数据加载中...
 
   



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

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