2013-07-17 17 views
-1

我有一個C++程序計算標記的平均值,方差,標準偏差和變異係數,但它只能從鍵盤讀取值。 正在尋求一種C++程序的幫助,它可以計算上述所有內容,但是可以從計算機中讀取數值(例如,從計算機讀取包含多列的文件和/或表格,並像計算足球聯賽表格一樣獨立計算所有列的所有數據)下面 是,我要進行修改,以滿足上述所有要求從C++的計算機讀取文件和/或表格

#include<iostream.h> 
#include<cmath> 
#define MAXSIZE 1000 
#include<fstream> 
using namespace std; 

void sd(void); 
void average(void); 
void variance(void); 
void coeff(void); 
void all(void); 
float x[MAXSIZE]; 
int i=0, n, choice, c=0; 
float avrg=0,var,stdv,cv, sum1=0, sum=0; 

main() 
{ 
     cout<<"Enter the numbers (press -200 when finished)\n";  
     int hasrun=0;      
     for(int i=0; i<MAXSIZE; i++)      ///INTERCHANGE n WiTH c 
       { 
       if (hasrun == 0) 
        { 
        cin>>x[i]; 
        if (x[i] == -200) 
         { 
         hasrun =1; 
         } 
        c++; 
        } 
        if(x[i]<0|x[i]>100) 
         { 
         break; 
         cout<<"\nthe entered value is invalid\n"; 
         hasrun =1; 
         } 
       } 
for(;;) 
     {    
      cout<<"\n\nEnter Your Choice\n" 
      "1.Calculate average\n" 
      "2.Calculate variance\n" 
      "3.Calculate standard deviation\n" 
      "4.Calculate the coefficient of variation\n" 
      "5.Display all\n" 
      "6.end\n\n";   

      cin >> choice; 
      int exit = 0; 
     switch (choice) 
       { 
       case 1: 
         average(); 
         break; 
       case 2: 
         variance(); 
         break; 
       case 3: 
         sd(); 
         break; 
       case 4: 
         coeff(); 
         break; 
       case 5: 
         all(); 
         break; 
       case 6: 
         exit=1; 
         break; 
       default: 
         cout<<"invalid choice"<<endl; 
       } 
     if (exit==1){ 
      break;} 
     }  
} 

/* Compute the sum of all elements */ 
void average(void) 
{ 
sum = 0;  
cout<<"\tMEAN OF STUDENTS MARKS:\n\t_____________________\n";  
for(int j=0; j<(c-1); j++) 
{ 
    sum = sum + x[j]; 
} 
avrg = sum /(float)(c-1); 

cout<<"\t\t"; 
cout<<avrg; 
cout<<"\n\n"; 
//system("PAUSE"); 
} 

void variance() 
{ 
sum1=0; 
    cout<<"\tVARIANCE OF THE STUDENTS MARKS:\n\t_______________________________\n"; 
for(i=0; i<(c-1); i++) 
       { 
        sum1 = sum1 + pow((x[i] - avrg),2); 
       } 
       var = (sum1 /(float)(c-1)); 

       cout<<"\t\t\t"; 
       cout<<var; 
       cout<<"\n\n"; 
} 

void sd() 
{ 
    cout<<"\tSTANDARD DEVIATION OF THE STUDENTS MARKS:\n\t________________________________\n"; 
    stdv=sqrt(var); 
cout<<"\t\t\t"; 
cout<<stdv; 
cout<<"\n\n"; 
} 
void coeff() 
{ 
    cout<<"\tCOEFFICIENT OF VARIATION:\n\t__________________________\n"; 
    cv=stdv/avrg; 
    cout<<"\t\t\t"; 
    cout<<cv; 
    cout<<"\n\n"; 
} 
void all() 
{ 
    cout<<"\tDISPLAY ALL:\n\t********************\n"; 
cout<<"average="; 
cout<<avrg; 
cout<<"\n\n"; 
    cout<<"variance="; 
    cout<<var;`enter code here` 
    cout<<"\n\n"; 
     cout<<"standard deviation="; 
     cout<<stdv; 
     cout<<"\n\n"; 
      cout<<"coefficient of variation="; 
      cout<<cv; 
      cout<<"\n\n"; 
} 

這是我自己的工作,我只是一個學生,誰愛嘗試新的東西我的計劃草案,我教過最上面的功能自己.HELP ..............

+0

「#include 」 - 你必須是一個真正的老學生... – 2013-07-17 22:43:41

+0

例如,嘗試搜索堆棧溢出「[C++]讀取文件變量」 –

回答

0

C++流庫的美妙之處在於它們的行爲相同,無論數據在哪裏即將形成。在你的情況下,你只需要閱讀fstream庫,然後從文件中讀取數據,而不是從標準輸入讀取數據。

如果youf文件是基於行的,我會爲您節省更多的問題,並告訴您您可能還想閱讀關於std::getline()函數。

0

使用標準庫中的文件流類。您需要包含<fstream>。然後創建一個輸入文件流從文件讀取:

ifstream fin("myfile.txt"); 
if(!fin) { 
    cerr << "Failed to open file\n"; 
} 

,所使用的標準輸入流(cin)使用文件流中完全相同的方式。

相關問題