哇哦~这就是我

This is my way ~
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

统计

  • 随笔 - 10
  • 文章 - 0
  • 评论 - 2
  • 引用 - 0

常用链接

留言簿(1)

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

C++第四次作业(统计)
#include<iostream>
#include
<string>
#include
<iomanip>
#include
<vector>
#include
<algorithm>
const int MAXN=100;
using namespace std;
int cmp ( const void* p1 , const void *p2 )
{
    return 
*double* )p1>*(double*)p2?1:-1;
}
typedef struct COLOR
{
    
string col;
    
double mean,median,sum,value[MAXN];
    
int num,p;
}COL;
int find ( vector<COL> &str , COL s )
{
    
for ( vector<COL>::size_type i = 0; i != str.size(); i++ )
        
if ( str[i].col==s.col )
        {
            str[i].sum
+=s.sum;
            str[i].num
++;
            str[i].value[str[i].p
++]=s.sum;
            return 
1;
        }
    return 
0;
}
void add ( vector
<COL>& str , COL s )
{
    
if ( !find ( str , s ) )
    {
        s.p
=1;
        s.num
=1;
        s.value[
0]=s.sum;
        str.push_back(s);
    }
}
void output ( vector
<COL> str )
{
    
double s=0,v[MAXN],median;
    
int n=0,q,j=0;
    
for (vector<COL>::size_type i = 0; i != str.size(); ++i )
    {
        
for (q=0 ; q<str[i].p ; q++)
            v[j
++]=str[i].value[q];
        s
+=str[i].sum;
        n
+=str[i].p;
        qsort(str[i].value,str[i].num,sizeof(str[i].value[
0]),cmp);
        
if (str[i].num%2)
            str[i].median
=str[i].value[(str[i].num-1)/2];
        
else
            str[i].median
=(str[i].value[str[i].num/2]+str[i].value[str[i].num/2-1])/2;
        cout
<<str[i].col<<"\t"<<""<<"sum="<<"\t"
            
<<setw(10)<<str[i].sum<<"\t"<<"mean="<<"\t"
            
<<setw(10)<<str[i].sum/str[i].num<<"\t"<<"median="<<"\t"
            
<<setw(10)<<str[i].median<<endl;
            
        
/*
        
for ( int j=0 ; j<str[i].p ; j++ )
            cout
<<str[i].value[j]<<endl;
            
*/
    }
    qsort(v,j,sizeof(v[
0]),cmp);
    
if (n%2!=0)
        median
=v[(n-1)/2];
    
else
        median
=(v[n/2]+v[n/2-1])/2;
    
    cout
<<"============================================================================"<<endl;
    cout
<<"ALL"<<"\t"<<""<<"sum="<<"\t"
        
<<setw(10)<<s<<"\t"<<"mean="<<"\t"
        
<<setw(10)<<s/n<<"\t"<<"median="<<"\t"
        
<<setw(10)<<median<<endl;
    
/*
    
for ( j=0 ; j<n ;j++ )
        cout
<<v[j]<<endl;
        
*/
}
int main ( )
{
    vector
<COL> str;
    COL s;
    
while ( cin>>s.col>>s.sum )
    {
        add(str,s);
    }
    output( str );
}

posted on 2008-03-27 17:24 chinaeli 阅读(91) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理