2011-09-12 28 views
4

我找的C++編碼該PASCAL代碼EOF使用的C++

var 
jumlah,bil : integer; 
begin 
jumlah := 0; 
while not eof(input) do 
begin 
    readln(bil); 
    jumlah := jumlah + bil; 
end; 
writeln(jumlah); 
end. 

我不明白,使用基於C++的EOF

它的目的是從1號線的數據計算在2002年底文件

編輯: 以及我試過,但沒有運氣

#include<iostream> 
using namespace std; 

int main() 
{ 
    int k,sum; 
    char l; 
    cin >> k; 
    while (k != NULL) 
    { 
      cin >> k; 
      sum = sum + k; 
    } 
    cout << sum<<endl; 
} 

抱歉,我相信新的C++

+1

哪個IO功能你在用嗎? –

+2

您需要了解代碼的用途,然後在C++中重新編碼該目的,而不是嘗試獲得1-1翻譯。關於如何從文件中讀取行,有很多答案。 (hit:'std :: getline') –

+0

@David:這不是我們做不到的,但我們不會回答「請給我一些代碼」問題。 – 2011-09-12 14:00:38

回答

6

找到更多的信息,你是相當接近,但可能你的Pascal背景的影響多一點比理想。你可能想更重要的是這樣的:

#include<iostream> 
using namespace std; // Bad idea, but I'll leave it for now. 

int main() 
{ 
    int k,sum = 0; // sum needs to be initialized. 
    while (cin >> k) 
    { 
      sum += k; // `sum = sum + k;`, is legal but quite foreign to C or C++. 
    } 
    cout << sum<<endl; 
} 

另外,C++可以把一個文件大致是這樣一個順序容器,並用它大約像它的工作將任何其他容器:

int main() { 
    int sum = std::accumulate(std::istream_iterator<int>(std::cin), 
           std::istream_iterator<int>(), 
           0); // starting value 
    std::cout << sum << "\n"; 
    return 0; 
} 
4

要格式化什麼大衛上面寫道:

#include <iostream> 
#include <string> 

int main() 
{ 
    int jumlah = 0; 
    std::string line; 
    while (std::getline(std::cin, line)) 
     jumlah += atoi(line.c_str()); 

    std::cout << jumlah << std::endl; 
    return 0; 
} 

您還可以在http://www.cplusplus.com/reference/iostream/

+0

我想我會使用常規的'std :: cin >> int'而不是getline,但是這更加緊密地模擬了他的pascal代碼。 –

+0

+1(我怎麼可能不會upvote?!!),但我更喜歡其他慣用的C++版本。 –