2016-03-19 17 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

ループでは、とのループについてを学ぶ必要があります。この場合には、ループは、おそらく最も適用されながら:

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ループとdo whileループをしている。ループと、私が学んだことは、ほとんどの場合、ほとんどすべてに適用できることを理解する必要があります。 – Chriskt

関連する問題