2016-03-19 99 views
-1

我正在研究一個程序,它可以計算文件中的數字量,並將它們加在一起。你如何計算文件中的整數數量? (C++)

Ex。假設有一個包含數字「1 5 6 2 56 8」的.txt文件。你可以看到有6個數字,總和是78.我是這樣計算自己的。最後,我想要程序導出另一個文件,告訴我「數量的數量,並且數字的總和是:」

我該如何修改我的程序以對任何文件執行此操作?

這裏是我的源代碼:

ifstream inFile; 
int value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, 
    value11, value12, value13, value14, value15, value16, value17, value18, value19, 
    value20; 
double average, sum; 

//OPEN FILE 
inFile.open("data.txt"); 

//ASSIGN VALUES WITH VARIABLES 
inputFile >> value1; 
inputFile >> value2; 
inputFile >> value3; 
inputFile >> value4; 
inputFile >> value5; 
inputFile >> value6; 
inputFile >> value7; 
inputFile >> value8; 
inputFile >> value9; 
inputFile >> value10; 
inputFile >> value11; 
inputFile >> value12; 
inputFile >> value13; 
inputFile >> value14; 
inputFile >> value15; 
inputFile >> value16; 
inputFile >> value17; 
inputFile >> value18; 
inputFile >> value19; 
inputFile >> value20; 

// CLOSE FILE 
input.close(); 

//CALCULATE THE SUM 
sum = value1 + value2 + value3 + value4 + value5 + value6 + value7 + value8 + value9 + value10 + 
    value11 + value12 + value13 + value14 + value15 + value16 + value17 + value18 + value19 + value20; 


//CALCULATE THE AVERGAGE 
average = sum/20; 

ofstream outputFile; 
outputFile.open("results.txt"); 
outputFile << "The number of the values is: 20" << endl; 
outputFile << "The total is: " << sum << endl; 
outputFile << "The average is: " << average << endl; 
outputFile.close(); 

return 0; 

}

+0

你應該學會循環和數組,也看看這個http://stackoverflow.com/questions/236129/split-a-string -in-c –

+0

另請參閱'std :: vector ',因此您不需要多少變量。 –

回答

0

如果無法對文件的字符串,你可以分割整個字符串,總結每個整數,否則,您可以先拆並檢查它們中的每一個是否爲整數,如果是,則將其添加到總和中。

對於分割,我使用this,並檢查字符串是否爲整數,可以使用this之一。

+0

如果你知道有多少個數字與你一起工作,你可以將它們讀入一個數組中,然後將它們彙總到for循環中,並計算數量。 – Afflicted

+0

在固定數字上工作幾乎不是一個好主意。如果你有不同數量的整數,你的程序將無法工作。所以你需要小心 – smttsp

3

您應該瞭解有關回路的而回路。在這種情況下,while循環可能是最適用的:

int main() { 
    std::ifstream inFile("data.txt"); 
    int value, sum = 0, count = 0; 

    while(inFile >> value) { 
     sum += value; 
     count += 1; 
    } 

    assert(count > 0); 
    std::cout << "sum: " << sum << "\n"; 
    std::cout << "average: " << (double) sum/count << "\n"; 
} 
+0

謝謝!我仍然習慣於C++。我已經學會了循環,while,while while循環。我只需要了解循環和我學到的所有東西在大多數情況下都可以應用於任何事情。 – Chriskt