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
Click For Summary

Discussion Overview

The discussion revolves around using for loops in C++ to calculate totals and approximations, specifically focusing on issues related to integer versus floating-point arithmetic. Participants share code examples and seek help with programming challenges.

Discussion Character

  • Technical explanation
  • Homework-related
  • Exploratory

Main Points Raised

  • One participant shares a code snippet attempting to calculate the total of a series using a for loop but encounters issues with the output.
  • Another participant suggests that the problem arises from using integer arithmetic for division, recommending the use of floats or doubles instead.
  • A different participant agrees, emphasizing that the integer division leads to truncation, and proposes declaring the denominator as a float or double.
  • Another suggestion involves using static casting to ensure the division result is treated as a double, allowing for accurate calculations without truncation.
  • A new participant introduces a separate code example unrelated to the original problem, focusing on a blood alcohol calculator, which does not directly address the for loop issues.
  • Another participant seeks assistance with a nested for loop to create a table of approximations based on user input, presenting a new programming challenge.

Areas of Agreement / Disagreement

There is a general agreement among participants regarding the need to address integer division in the original code. However, the introduction of a new programming problem creates a shift in focus, leaving the discussion on the initial topic somewhat unresolved.

Contextual Notes

The discussion includes various programming challenges and solutions, but the introduction of unrelated code may lead to confusion regarding the main topic of for loops and arithmetic types.

Who May Find This Useful

Individuals learning C++ programming, particularly those interested in understanding for loops, arithmetic operations, and handling user input in coding exercises.

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;
}
 
Technology 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).
 
OH! I see.. THanks both of you guys!
 
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
 

Similar threads

  • · Replies 22 ·
Replies
22
Views
4K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 15 ·
Replies
15
Views
4K
  • · Replies 1 ·
Replies
1
Views
2K
Replies
12
Views
3K
  • · Replies 10 ·
Replies
10
Views
3K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 1 ·
Replies
1
Views
1K