2016-03-19 5 views
-1

Я работаю над программой, которая может подсчитывать количество чисел в файле и добавлять их все вместе.Как вы рассчитываете количество целых чисел в файле? (C++)

Ex. Скажем, есть .txt-файл, который содержит числа «1 5 6 2 56 8». Как видите, есть 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

Вы должны узнать о для петель и в то время как петли. В этом случае петля в то время как, вероятно, наиболее применимо:

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++. Я учился на циклы, пока, и делаю, пока петли. Мне просто нужно понять, что петли и все, что я узнал, можно применить практически к чему-либо в большинстве случаев. – Chriskt

Смежные вопросы