Learn C++ for Loop: Finding the Total of a Series with Example Code

  • Context: C/C++ 
  • Thread starter Thread starter loli12
  • Start date Start date
  • Tags Tags
    C++ Loop
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
6 replies · 11K views
loli12
I am learning how to use the for loop to find out the total of:
1/30 + 2/29 + 3/28 + ... + 29/2 + 30/1
and i wrote the following. but it doesn't work and give the correct total.
can you guys tell me what's wrong?
Thanks

#include <iostream>
using namespace std;
int main ()
{
int num, den; //numerator, denominator
double total=0;

for (num = 1, den = 30; num < 31; num++, den--)
total += (num/den);
cout << "Total is " << total<< endl;
return 0;
}
 
Physics news on Phys.org
The for loop looks fine. The problem is that you're trying to do integer arithmetic with non-integer values (fractions). Try using floats or doubles instead.

- Warren
 
The problem is that the answer of num/den would be taken as an interger, then put into a double. So it would convert 0 into...0. The easiest solution would be to declare den as a float (or double).
 
You can still keep the integers, but use static casting to convert the result of division to double without truncation:

Code:
total += static_cast< double >( num ) / den;

den, being an integer will be coerced to a double by the compiler.
 
Last edited:
This will correct the problem for you!

#include<stdio.h>

#define POUNDS_PER_KILO 2.2406
#define OZ_ALCOHOL_PER_DRINK 0.54
#define PERCENT_WATER_MALE 0.58
#define PERCENT_WATER_FEMALE 0.49
#define GRAMS_ALC_PER_OZ 23.36
#define PERCENT_WATER_BLOOD 0.806
#define METABOLISM_RATE 0.012

int main(void)
{

float numDrinks, weight, bac, mlWater, gramsAlc, alcPerMlWater, alcPerMlBlood, timeDrinking;
char gender = 'c';

printf("Welcome to the Percent Blood Alcohol Calculator!\n\n");
printf("Enter the number of drinks you've had so far: ");
scanf("%f", &numDrinks);

printf("How many hours ago did you start drinking: ");
scanf("%f", &timeDrinking);

printf("Enter your gender(m or f): ");
while((gender!='m')&&(gender!='M')&&(gender!='f')&&(gender!='F')) {

scanf("%c", &gender);
}

printf("How much do you weigh (yes, your real weight): ");
scanf("%f", &weight);

if (gender == 'M' || gender == 'm') {
mlWater = weight/POUNDS_PER_KILO * PERCENT_WATER_MALE*1000;
}else if(gender=='F' || gender == 'f') {
mlWater = weight/POUNDS_PER_KILO * PERCENT_WATER_FEMALE*1000;
}

gramsAlc = numDrinks*OZ_ALCOHOL_PER_DRINK*GRAMS_ALC_PER_OZ;
alcPerMlWater = gramsAlc / mlWater;
alcPerMlBlood = alcPerMlWater * PERCENT_WATER_BLOOD;
bac = alcPerMlBlood * 100;
bac = bac - METABOLISM_RATE * timeDrinking;

printf("Your BAC is: %f\n", bac);

printf("\n**Discalimer: The information from this calculator is only an estimate**\n");
printf(" In fact, you're probably not the least bit inebriated, go have five more.\n");

return 0;
}
 
can anyone help

im having trouble with the for loop within the for loop.

i have to to write a program that asks the user to enter the amount of terms they would like to use for an approximatoin. then print out a table that shows term number and approximation.
the formula is p = 4 - 4/3 + 4/5 - 4/7 + 4/9 - 4/11 + ....and so on.
the table should look like this. if the user enters 5,


Term Approximation Value
1 x.xxxxxx
2 x.xxxxxx
3 x.xxxxxx
4 x.xxxxxx
5 x.xxxxxx