2011-05-11 53 views
0

我想请求我的硬件的一些帮助。我想我真的很接近了解这一点。我们的CompSci类目前正在从学习Python转向(介绍性)C++。由于这两个是,模糊地类似,因为我们是初学者,所以我们被建议用Python编写问题(我们非常熟悉)并使用我们刚刚学到的基础知识将其翻译成C++。要解决的问题是一个简单的“给出一个正整数输入,从1到该数字添加连续整数”。因此,一个例子是:从输入添加连续整数(从Python转换到C++)

>>Enter a positive integer: 10 
>>1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55 

的Python代码(这是成功的),我正在试图转换成C++是:

num = int(raw_input("Enter a positive integer: ")) 
sum = 0 
for i in range(1, num): 
    sum += i 
    print i, "+", 
print num, "=", sum+num 

而且我不成功C++代码:

#include <iostream> 
using namespace std; 

int main() 
{ 
    int num; 
    int sum; 
    int i; 
    sum = 0; 
    cout << "Please enter a positive integer: " << endl; 
    cin >> num; 
    for (i=0; 1 <= num; i++) 
     { 
     sum = sum + i; 
     cout << i << "+" << endl; 
     } 
    cout << num << "=" << sum + num << endl; 
    return 0; 
} 

但输出只是一个从0到无穷大的无限的,无结束的加法序列,从上到下。更糟糕的是,它没有像我想要的那样以直线打印。正如你所看到的,我毫不夸张地试图逐字翻译它;我认为这将是万无一失的。我的for循环肯定有问题。由于C++没有类似Python那样的“范围”类,我认为中间条件语句(“1 < = num;”)将作为范围。为什么我的“=”符号不能打印出来?我不明白为什么它在达到“num”时不会终止。认为你可以帮忙?我预先感谢你的答复。

+1

我会欺骗和刚才说的cout << NUM << “=” << NUM *(NUM + 1)/ 2 << endl; :) – 2011-05-11 06:53:33

+0

谢谢大家;这是一个非常快速的回应。看起来所有的解决方案都是现成的;我知道问题出在我的病情上。再次感谢你。 – Derrick 2011-05-11 07:00:03

回答

0

此:

for (i=0; 1 <= num; i++) 

应该是:

for (i=0; i <= num; i++) 
0

尝试。

#include <iostream> 
using namespace std; 

int main() 
{ 
    int num; 
    int sum; 
    int i; 
    sum = 0; 
    cout << "Please enter a positive integer: "; 
    cin >> num; 
    for (i=0; i < num; i++) 
     { 
     sum = sum + i; 
     cout << i << " + "; 
     } 
    cout <<num << " = " << sum+num << endl; 
    return 0; 
} 
0

我真的不知道Python,但代码

for i in range(1, num): 

看起来非常相似,

for (int i=1; i <= num; ++i) 

或者是它可能

for (int i=1; i != num; ++i) 

看起来更像C++?

+0

不,它是'for(int i = 1; i 2011-05-11 06:51:24

+0

@wiso - 击败你! :-) Python范围可能是开放式的,就像C++迭代器范围通常一样。 – 2011-05-11 06:52:26

+0

是的,我刚才发现问题是我没有在条件中指定我。感谢您的帮助。 – Derrick 2011-05-11 07:01:51

0

C++中的循环比python更基本,for循环更简单,它基于三个表达式:初始化表达式,循环测试表达式和计数表达式。特别是你的代码有什么问题是测试表达式。请记住,如果测试表达式为true,则会执行循环。如果条件i<num为真,则需要循环。你的循环永远不会结束,因为num总是>= 1,或者你永远写下1 <= num

打印everythig一行不使用endl

1

固定码:

#include <iostream> 
using namespace std; 

int main() 
{ 
    int num; 
    int sum; 
    int i; 
    sum = 0; 
    cout << "Please enter a positive integer: " << endl; 
    cin >> num; 
    // Here you had 1 <= num which was always true for positive num 
    // and it did not depend on value of i. 
    for (i = 1; i < num; ++i) 
     { 
     sum = sum + i; 
     cout << i << "+"; // Here you had endl which produced newline characters. 
     } 
    cout << num << "=" << sum + num << endl;- 
    return 0; 
} 
+0

啊,这是非常深入的。谢谢;这很清楚! – Derrick 2011-05-11 07:20:40