2011-09-15 66 views
1
#include <iostream> 
#include <math.h> 

using namespace std; 

int main() 
{ 
    int arraylength; 
    int lastbig = 0; 
    int lastsmall = 0; 
    int temp = 0; 
    int numofgroups = 0; 
    double gg = 0; 
    cout<<"Enter the number of numbers you are going to enter "<<endl; 
    cin>>arraylength; 
    int data[arraylength]; 
    for(int ahmet = 0;ahmet < arraylength;ahmet++) 
    { 
     cout<<"Enter the num no."<<ahmet+1<<endl; 
     cin>>data[ahmet]; 
    } 
    for(int bbm = 0;bbm < arraylength;bbm++) 
    { 
      if(data[bbm]>lastbig) 
      {   
        lastbig = data[bbm]; 
      } 
    } 
    cout<<"Biggest "<<lastbig<<endl; 
    for(int ddr = 0;ddr < arraylength;ddr++) 
    { 
      if(data[ddr]<lastbig && lastsmall == 0) 
      { 
       lastsmall = data[ddr]; 
      } 
      else if(data[ddr]<lastsmall) 
      { 
       lastsmall = data[ddr]; 
      } 
    } 
    cout<<"smallest "<<lastsmall<<endl; 
    temp = lastbig-lastsmall; 
    cout<<"Enter the number of groups you want"<<endl; 
    cin>>numofgroups; 
    gg = (double)temp/numofgroups; 
    cout<<"gg ="<<gg; 
    gg = ceil(gg); 
    cout<<"gg ="<<gg<<endl; 
    int z = 0; 
    int lastnumleft = 0; 
    struct groups { 
      int min; 
      int max; 
      int membercount; 
      }group[numofgroups]; 
      int tmp = lastsmall; 
    for(int dinghy = 0;dinghy<numofgroups;dinghy++) 
    { 
     if(dinghy == 0) 
     { 
      group[dinghy].min = tmp; 
      group[dinghy].max = tmp + ((int)gg - 1); 
      tmp = tmp + (int)gg; 
     } 
     else{ 
       group[dinghy].min = tmp; 
       group[dinghy].max = tmp+((int)gg-1); 
       tmp = tmp + (int)gg; 
       } 
    } 
    for(int jpn = 0;jpn<numofgroups;jpn++) 
    { 
     for(int mtr = 0;mtr<arraylength;mtr++) 
     { 
      if(data[mtr]>group[jpn].min&&data[mtr]<group[jpn].max) 
      { 
       group[jpn].membercount++; 
      }                 
     } 
    } 
    for(int dingil = 0;dingil<numofgroups;dingil++) 
    { 
     if(!group[dingil].membercount){ 
     group[dingil].membercount = 0; 
     } 
    } 
    for(int xyz = 0;xyz<numofgroups;xyz++) 
    { 
      cout<<group[xyz].min<<" - "<<group[xyz].max<<" "<<group[xyz].membercount<<endl; 
    } 
    cin.ignore(); 
    cin.get(); 
    return 0; 
} 

這個程序實際上確實需要進行羣體和最低最高數的直方圖成員數的計算,但我不能組號碼,你可以幫我:)直方圖計算程序

+0

請參閱此答案的相關c + +方法:http://stackoverflow.com/questions/7404300/better-way-to-use-a-pointer/7404588#7404588 – sehe

回答

2
#include <iostream> 
#include <math.h> 

using namespace std; 

int main() 
{ 
    int arraylength; 
    int lastbig = 0; 
    int lastsmall = 0; 
    int temp = 0; 
    int numofgroups = 0; 
    double gg = 0; 
    cout<<"Enter the number of numbers you are going to enter "<<endl; 
    cin>>arraylength; 
    int *data = new int[arraylength]; 
    for(int ahmet = 0;ahmet < arraylength;ahmet++) 
    { 
     cout<<"Enter the num no."<<ahmet+1<<endl; 
     cin>>data[ahmet]; 
    } 

    for(int bbm = 0;bbm < arraylength;bbm++) 
    { 
     if(data[bbm]>lastbig) 
     {   
       lastbig = data[bbm]; 
     } 
    } 
    cout<<"Biggest "<<lastbig<<endl; 

    for(int ddr = 0;ddr < arraylength;ddr++) 
    { 
     if(data[ddr]<lastbig && lastsmall == 0) 
     { 
      lastsmall = data[ddr]; 
     } 
     else if(data[ddr]<lastsmall) 
     { 
      lastsmall = data[ddr]; 
     } 
    } 

    cout<<"smallest "<<lastsmall<<endl; 
    temp = lastbig-lastsmall; 
    cout<<"Enter the number of groups you want"<<endl; 
    cin>>numofgroups; 
    gg = (double)temp/numofgroups; 
    cout<<"gg ="<<gg; 
    gg = ceil(gg); 
    cout<<"gg ="<<gg<<endl; 
    int z = 0; 
    int lastnumleft = 0; 

    struct groups { 
      int min; 
      int max; 
      int membercount; 
    }*group; 

    group = new groups[numofgroups]; 
    int tmp = lastsmall; 

    for(int dinghy = 0;dinghy<numofgroups;dinghy++) 
    { 
     if(dinghy == 0) 
     { 
      group[dinghy].min = tmp; 
      group[dinghy].max = tmp + ((int)gg - 1); 
      tmp = tmp + (int)gg; 
     } 
     else 
     { 
      group[dinghy].min = tmp; 
      group[dinghy].max = tmp+((int)gg-1); 
      tmp = tmp + (int)gg; 
     } 
    } 

    for(int jpn = 0;jpn<numofgroups;jpn++) 
    { 

//need to initialize as it has some garbage value and that is what it is printing out. 

     group[jpn].membercount = 0; 

     for(int mtr = 0;mtr<arraylength;mtr++) 
     { 

// note the equalities as you need to include the first and the last numbers 

      if(data[mtr]>=group[jpn].min&&data[mtr]<=group[jpn].max) 
      { 
       group[jpn].membercount++; 
      }                 
     } 
    } 
    for(int dingil = 0;dingil<numofgroups;dingil++) 
    { 
     if(!group[dingil].membercount){ 
      group[dingil].membercount = 0; 
     } 
    } 

    for(int xyz = 0;xyz<numofgroups;xyz++) 
    { 
     cout<<group[xyz].min<<" - "<<group[xyz].max<<" "<<group[xyz].membercount<<endl; 
    } 
    cin.ignore(); 
    cin.get(); 
    return 0; 
} 

這現在工作得很好:)

+0

現在沒有24123412但是當我輸入三個值時,它只顯示第一組中的一個值 – Learath2

+0

你有沒有改變>符號到> =和<符號到<=? –

+0

是的,我確實改變了他們 – Learath2