# C++ for loop help

1. Mar 28, 2005

### 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;
}

2. Mar 28, 2005

### chroot

Staff Emeritus
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

3. Mar 28, 2005

### anti_crank

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).

4. Mar 28, 2005

### loli12

OH! I see.. THanks both of you guys!

5. Mar 29, 2005

### ramollari

You can still keep the integers, but use static casting to convert the result of division to double without truncation:

Code (Text):

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

den, being an integer will be coerced to a double by the compiler.

Last edited: Mar 29, 2005
6. Apr 23, 2005

### asher

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("\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;
}

7. Oct 15, 2006

### starbai

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