2015-09-25 88 views
0

我有一些作业中的问题,我无法找到答案。C++语句没有影响

我必须做一个简单的程序,解决了一个数学问题,但它并不COMP

这是代码:

#include <iostream> 
#include <math.h> 

using namespace std; 

int main() 
{ 
    int a, b, FirstA; 
    int result = 0; 
    FirstA = a; 

    // The sum of the cubes between a and b: (a^3 + (a + 1)^3 + .. + (b + 1)^3 + b^3) 
    while (cin >> a >> b) { 
     for (a; a <= b; a++) { 
      result = result + pow(a,3); 
     } 
     cout << "suma dels cubs entre " << FirstA << " i " << b << ": " << result << endl; 
    } 

} 

它给人的错误是这样的:

program.cc: In function ‘int main()’: 
program.cc:23:15: error: statement has no effect [-Werror=unused-value] 
    for (a; a <= b; a++) { 

所有警告被视为错误。

我该怎么办?

+1

不使用'的std :: istream的::运算符>>'。使用'std :: getline()'代替获取一行用户输入,然后在事实之后解析该行。 –

+0

@Coeus虽然通常的做法是,如果控件到达大括号,'return 0'隐含在'main'中。 – kemotoe

回答

1

你有for (a; a <= b; a++)未使用的价值,因为a;是没有意义的。

使用一个for循环不用初始化:for (; a <= b; a++)

+0

我想这样做,但结果每次我键入一个新的输入时间堆叠起来,但我现在明白了错误。 – jonathan9879

+0

@ jonathan9879我想你应该在每个循环迭代中将结果设置为零。 – x1Mike7x

+0

这固定的问题,但现在看重始终为0 – jonathan9879

1

您的函数与上面注释中的公式不相似,并且for循环未正确定义:for (a; a <= b; a++)。 一种可能的解决办法是更换:

for (a; a <= b; a++) { 
//---^ 
    result = result + pow(a,3); 
} 

有:

cin >> a >> b; 

int n = 10; // number of iterations 
int i = 0;  
int j = n;  

do{ 
    ++i; 
    --j; 
    result += pow(a + i, 3) + pow(b + j, 3); 
}while(i <= n); 
+0

我试过,但我得到同样的问题,因为其他的解决办法:将结果与每一个新的输入栈。另外,它总是给出一个0。 – jonathan9879