2015-11-02 41 views
0
#include <iostream> 
#include <math.h> 
#include <ctype.h> 

using namespace std; 
int main() 
{ 
    int n=0,tot=0; 
    float sum = 0; 
    float average = 0; 
    float product = 1; 


    cout<<"Type an integer and press Enter:\n"; 
    cin>>n; 
    /* 
    Your logic goes here 
    */ 
    for(int i=1;i<=n;i++){ 
     cout<<sum<<endl; 
     sum= sum+(1/i); 
     product=product*1/i; 
     tot++; 
    } 
    cout<<"Sum, product and average of reciprocals are:\n"; 
    cout<<sum<<endl; 
    cout<<product<<endl; 
    cout<<average<<sum/tot<<endl; 
} 

任何人都请告诉我我做错了什么,我的总和总是等于1,我不知道为什么。我把cout和每次迭代打印出“1”。我的逻辑是对的,但有一些我找不到的错误。N倒数总和[划分错误]

+3

'1/i'将为0对于所有'i'大于1的整数除法。 – erip

回答

1

下面的行

sum= sum+(1/i); 

是否整数除法,当i = 1它将评价为1,否则当I> 1,这将是0。我想使用1.0/i迫使浮点除法

编辑:我会做出改变你product更新以及

1

1/i将为所有i克0整数除法。您需要用1.0/i替换1/i来解决此问题。

参见ideone here