Svy-20
asked on
Help me debug this program
How do you use the for loop to find the sum of a five digit number?
ex) 12345 should have the sum of 15
23456 = 20
but the way I program it, the answer is always = 15. Help me fixed this problem.
this is what I got so far
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int main()
{
int number;
cout <<"Enter a five digit number: " << endl;
cin >> number;
int sum = 0;
for ( int i = sum;i <= 5; i++)
sum += i;
cout <<"Sum is " << sum << endl;
return( 0 );
}
ex) 12345 should have the sum of 15
23456 = 20
but the way I program it, the answer is always = 15. Help me fixed this problem.
this is what I got so far
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int main()
{
int number;
cout <<"Enter a five digit number: " << endl;
cin >> number;
int sum = 0;
for ( int i = sum;i <= 5; i++)
sum += i;
cout <<"Sum is " << sum << endl;
return( 0 );
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Svy-20,
akshayxx's program does the job.
The reason why your pogram is always printing 15 is that your for loop is effectively:
for(int i = 0 ; i <= 5 ; i++)
sum += i
number actually has no impact on the for loop in your program, so it's just calculating sum(0,1,2,3,4,5) everytime which is 15.
akshayxx's program does the job.
The reason why your pogram is always printing 15 is that your for loop is effectively:
for(int i = 0 ; i <= 5 ; i++)
sum += i
number actually has no impact on the for loop in your program, so it's just calculating sum(0,1,2,3,4,5) everytime which is 15.
ASKER
Thank! this work
BUT
I need to know how to use the (FOR statement) for this program, if you know how, help me.
BUT
I need to know how to use the (FOR statement) for this program, if you know how, help me.
while(number!=0){
sum+=number%10;
number=number/10;
}
when written in for loop will be
for(;number!=0;number=numb er/10)sum+ =number%10 ;
this sounds pretty much home assignment.. use the FOR loop :P
sum+=number%10;
number=number/10;
}
when written in for loop will be
for(;number!=0;number=numb
this sounds pretty much home assignment.. use the FOR loop :P
ASKER
Hey akshayxx can you help me out with this
How do you calculate the percentage for this program (count the wrong answer only once)
Here's the source.
#include <iostream>
#include <ctime>
#include <cstdlib>
using std::cout;
using std::cin;
using std::endl;
void congrats (int);
void regret (int);
int main()
{
int home, home1, home2, home3;
//int total, correct=0, wrong=0;
char answer;
unsigned answer1;
//double percentage;
//total = correct + wrong;
//percentage = (correct/total)*100;
srand ( time( 0 ));
cout << "Would You Like To Practice Your Multiplication Tables\n";
cout << "Please enter y to continue or n to quit: ";
cin >> answer;
while ( answer == 'y' || answer == 'Y' ){
home = (rand() % 10 );
home1 = (rand() % 10 );
cout <<"\nHow much is "<< home <<" times "<< home1 << "? : ";
cin >> answer1;
home2 = 1 + rand() % 4;
if( answer1 == home * home1 )
congrats (home2);
else
regret (home2);
while ( answer1 != home * home1 ) {
cout << "? : ";
home3 = home * home1;
cin >> answer1;
home2 = 1 + rand() % 4;
if(answer1 == home * home1 )
congrats (home2);
else
regret (home2);
}
cout <<"\nWould you like to continue, y/n: ";
cin >> answer;
}
//cout <<"Your Score is " << percentage <<"%" << endl;
return 0;
}
void congrats (int CongratPicker) { switch ( CongratPicker ){ case 1: cout << "Very good! " << endl; break; case 2: cout << "Excellent! " << endl; break; case 3: cout << "Nice work! " << endl; break; case 4:
cout <<"Keep up the good work! " << endl; break; }
}
void regret (int regretPicker) {
switch ( regretPicker ){ case 1: cout <<"No. Please try again. " << endl; break; case 2: cout <<"Wrong. Try once more. " << endl;
break; case 3: cout <<"Don't give up! " << endl;
break;
case 4:
cout <<"No. Keep trying. " << endl;
break;
}
}
How do you calculate the percentage for this program (count the wrong answer only once)
Here's the source.
#include <iostream>
#include <ctime>
#include <cstdlib>
using std::cout;
using std::cin;
using std::endl;
void congrats (int);
void regret (int);
int main()
{
int home, home1, home2, home3;
//int total, correct=0, wrong=0;
char answer;
unsigned answer1;
//double percentage;
//total = correct + wrong;
//percentage = (correct/total)*100;
srand ( time( 0 ));
cout << "Would You Like To Practice Your Multiplication Tables\n";
cout << "Please enter y to continue or n to quit: ";
cin >> answer;
while ( answer == 'y' || answer == 'Y' ){
home = (rand() % 10 );
home1 = (rand() % 10 );
cout <<"\nHow much is "<< home <<" times "<< home1 << "? : ";
cin >> answer1;
home2 = 1 + rand() % 4;
if( answer1 == home * home1 )
congrats (home2);
else
regret (home2);
while ( answer1 != home * home1 ) {
cout << "? : ";
home3 = home * home1;
cin >> answer1;
home2 = 1 + rand() % 4;
if(answer1 == home * home1 )
congrats (home2);
else
regret (home2);
}
cout <<"\nWould you like to continue, y/n: ";
cin >> answer;
}
//cout <<"Your Score is " << percentage <<"%" << endl;
return 0;
}
void congrats (int CongratPicker) { switch ( CongratPicker ){ case 1: cout << "Very good! " << endl; break; case 2: cout << "Excellent! " << endl; break; case 3: cout << "Nice work! " << endl; break; case 4:
cout <<"Keep up the good work! " << endl; break; }
}
void regret (int regretPicker) {
switch ( regretPicker ){ case 1: cout <<"No. Please try again. " << endl; break; case 2: cout <<"Wrong. Try once more. " << endl;
break; case 3: cout <<"Don't give up! " << endl;
break;
case 4:
cout <<"No. Keep trying. " << endl;
break;
}
}
in ur program . it doesnt let u leave the question .. if u have wrong answer it keeps u asking .. so u mean to say for all those answers that he cudnt give correct answer in first attempt .. shud be counted as wrong answers..
and for each question .. i shud count the 'wrong' only once ..even if he takes more than 2 attempt to solve it
and for each question .. i shud count the 'wrong' only once ..even if he takes more than 2 attempt to solve it
if that is the case .. here is your program with desired changes..
#include <iostream>
#include <ctime>
#include <cstdlib>
using std::cout;
using std::cin;
using std::endl;
void congrats (int);
void regret (int);
int main ()
{
int
home,
home1,
home2,
home3;
int total=0, correct=0, wrong=0;
char
answer;
unsigned
answer1;
double percentage;
//total = correct + wrong;
srand (time (0));
cout << "Would You Like To Practice Your Multiplication Tables\n";
cout << "Please enter y to continue or n to quit: ";
cin >> answer;
while (answer == 'y' || answer == 'Y')
{
total++;
home = (rand () % 10);
home1 = (rand () % 10);
cout << "\nHow much is " << home << " times " << home1 << "? : ";
cin >> answer1;
home2 = 1 + rand () % 4;
if (answer1 == home * home1){
congrats (home2);
correct++;
}
else{
regret (home2);
while (answer1 != home * home1)
{
cout << "? : ";
home3 = home * home1;
cin >> answer1;
home2 = 1 + rand () % 4;
if (answer1 == home * home1)
congrats (home2);
else
regret (home2);
}
wrong++;
}
cout << "\nWould you like to continue, y/n: ";
cin >> answer;
}
percentage=100*(double)cor rect/(doub le)total;
cout<<"total= "<<total<<endl<<"correct = "<<correct<<endl<<"wrong= "<<wrong<<endl;
cout <<"Your Score is " << percentage <<"%" << endl;
return 0;
}
void
congrats (int CongratPicker)
{
switch (CongratPicker)
{
case 1:
cout << "Very good! " << endl;
break;
case 2:
cout << "Excellent! " << endl;
break;
case 3:
cout << "Nice work! " << endl;
break;
case 4:
cout << "Keep up the good work! " << endl;
break;
}
}
void
regret (int regretPicker)
{
switch (regretPicker)
{
case 1:
cout << "No. Please try again. " << endl;
break;
case 2:
cout << "Wrong. Try once more. " << endl;
break;
case 3:
cout << "Don't give up! " << endl;
break;
case 4:
cout << "No. Keep trying. " << endl;
break;
}
}
#include <iostream>
#include <ctime>
#include <cstdlib>
using std::cout;
using std::cin;
using std::endl;
void congrats (int);
void regret (int);
int main ()
{
int
home,
home1,
home2,
home3;
int total=0, correct=0, wrong=0;
char
answer;
unsigned
answer1;
double percentage;
//total = correct + wrong;
srand (time (0));
cout << "Would You Like To Practice Your Multiplication Tables\n";
cout << "Please enter y to continue or n to quit: ";
cin >> answer;
while (answer == 'y' || answer == 'Y')
{
total++;
home = (rand () % 10);
home1 = (rand () % 10);
cout << "\nHow much is " << home << " times " << home1 << "? : ";
cin >> answer1;
home2 = 1 + rand () % 4;
if (answer1 == home * home1){
congrats (home2);
correct++;
}
else{
regret (home2);
while (answer1 != home * home1)
{
cout << "? : ";
home3 = home * home1;
cin >> answer1;
home2 = 1 + rand () % 4;
if (answer1 == home * home1)
congrats (home2);
else
regret (home2);
}
wrong++;
}
cout << "\nWould you like to continue, y/n: ";
cin >> answer;
}
percentage=100*(double)cor
cout<<"total= "<<total<<endl<<"correct = "<<correct<<endl<<"wrong= "<<wrong<<endl;
cout <<"Your Score is " << percentage <<"%" << endl;
return 0;
}
void
congrats (int CongratPicker)
{
switch (CongratPicker)
{
case 1:
cout << "Very good! " << endl;
break;
case 2:
cout << "Excellent! " << endl;
break;
case 3:
cout << "Nice work! " << endl;
break;
case 4:
cout << "Keep up the good work! " << endl;
break;
}
}
void
regret (int regretPicker)
{
switch (regretPicker)
{
case 1:
cout << "No. Please try again. " << endl;
break;
case 2:
cout << "Wrong. Try once more. " << endl;
break;
case 3:
cout << "Don't give up! " << endl;
break;
case 4:
cout << "No. Keep trying. " << endl;
break;
}
}
ASKER
Hey akshayxx help me out with this (GAME)
how do you clear the screen whenever the user wins and continue to play the game?
#include <iostream> // iostream header file
#include <windows.h>
#include <cstdlib> // contains function prototypes for functions srand and rand
#include <ctime> // contains prototype for function time
using std::cout; // program uses cout
using std::endl; // program uses endl
using std::cin;
void regrets (int);
void congrats (int);
int Game (void);
int rollDice( void ); // function prototype
int main() // function main begins program execution
{
enum Status { CONTINUE, WON, LOST }; // enumeration constants represent game status
int num, sum, wager; // declared
int home, home1;
int myPoint; // declared
int bankBalance = 1000; // initialize
int newbankBalance;
Status gameStatus; // can contain CONTINUE, WON or LOST
srand( time( 0 ) ); // randomize random number generator using current time
sum = rollDice(); // first roll of the dice
cout <<"You have $1000 in the bank " << endl;
while (bankBalance = 1000)
cout <<"Please enter a wager: " << endl;
cin >> num;
if( wager > 1000 || wager < 0)
cout <<"Please bet a valid amount" << endl;
cin >> num;
Game ((int) sum);
home = 1 + rand() % 2;
if( gameStatus == WON )
congrats (home);
newbankBalance = bankBalance + wager;
cout <<"Your bankBalance is" << newbankBalance << endl;
else
regrets (home);
newbankBalance = bankBalance - wager;
if( newbankBalance = 0 )
cout <<"Sorry. You busted!" << endl;
int Game ( int sum ) {
switch ( sum ) { // determine game status and point based on sum of dice
// win on first roll
case 7:
case 11:
gameStatus = WON;
break;
// lose on first roll
case 2:
case 3:
case 12:
gameStatus = LOST;
break;
// remember point
default:
gameStatus = CONTINUE;
myPoint = sum;
cout << "Point is " << myPoint << endl;
break; // optional
} // end switch
while ( gameStatus == CONTINUE ) { // while game not complete ...
sum = rollDice(); // roll dice again
// determine game status
if ( sum == myPoint ) // win by making point
gameStatus = WON;
else
if ( sum == 7 ) // lose by rolling 7
gameStatus = LOST;
} // end while
// display won or lost message
if ( gameStatus == WON )
cout << "Player wins" << endl;
else
cout << "Player loses" << endl;
return 0; // indicates successful termination
} // end main
// roll dice, calculate sum and display results
int rollDice( void )
{
int die1;
int die2;
int workSum;
die1 = 1 + rand() % 6; // pick random die1 value
die2 = 1 + rand() % 6; // pick random die2 value
workSum = die1 + die2; // sum die1 and die2
// display results of this roll
cout << "Player rolled " << die1 << " + " << die2
<< " = " << workSum << endl;
return workSum; // return sum of dice
} // end function rollDice
return 0;
}
void congrats (int CongratPicker) {
switch (CongratPicker) {
case 1:
cout <<"Now's the time to cash in your chips!" << endl;
break;
case 2:
cout <<"Wow. You're so lucky!" << endl;
break;
}
}
void regrets (int SorryPicker) {
switch (SorryPicker) {
case 1:
cout <<"Oh, you're going for broke, huh?" << endl;
break;
case 2:
cout <<"Aw cmon, take a chance!" << endl;
break;
}
}
how do you clear the screen whenever the user wins and continue to play the game?
#include <iostream> // iostream header file
#include <windows.h>
#include <cstdlib> // contains function prototypes for functions srand and rand
#include <ctime> // contains prototype for function time
using std::cout; // program uses cout
using std::endl; // program uses endl
using std::cin;
void regrets (int);
void congrats (int);
int Game (void);
int rollDice( void ); // function prototype
int main() // function main begins program execution
{
enum Status { CONTINUE, WON, LOST }; // enumeration constants represent game status
int num, sum, wager; // declared
int home, home1;
int myPoint; // declared
int bankBalance = 1000; // initialize
int newbankBalance;
Status gameStatus; // can contain CONTINUE, WON or LOST
srand( time( 0 ) ); // randomize random number generator using current time
sum = rollDice(); // first roll of the dice
cout <<"You have $1000 in the bank " << endl;
while (bankBalance = 1000)
cout <<"Please enter a wager: " << endl;
cin >> num;
if( wager > 1000 || wager < 0)
cout <<"Please bet a valid amount" << endl;
cin >> num;
Game ((int) sum);
home = 1 + rand() % 2;
if( gameStatus == WON )
congrats (home);
newbankBalance = bankBalance + wager;
cout <<"Your bankBalance is" << newbankBalance << endl;
else
regrets (home);
newbankBalance = bankBalance - wager;
if( newbankBalance = 0 )
cout <<"Sorry. You busted!" << endl;
int Game ( int sum ) {
switch ( sum ) { // determine game status and point based on sum of dice
// win on first roll
case 7:
case 11:
gameStatus = WON;
break;
// lose on first roll
case 2:
case 3:
case 12:
gameStatus = LOST;
break;
// remember point
default:
gameStatus = CONTINUE;
myPoint = sum;
cout << "Point is " << myPoint << endl;
break; // optional
} // end switch
while ( gameStatus == CONTINUE ) { // while game not complete ...
sum = rollDice(); // roll dice again
// determine game status
if ( sum == myPoint ) // win by making point
gameStatus = WON;
else
if ( sum == 7 ) // lose by rolling 7
gameStatus = LOST;
} // end while
// display won or lost message
if ( gameStatus == WON )
cout << "Player wins" << endl;
else
cout << "Player loses" << endl;
return 0; // indicates successful termination
} // end main
// roll dice, calculate sum and display results
int rollDice( void )
{
int die1;
int die2;
int workSum;
die1 = 1 + rand() % 6; // pick random die1 value
die2 = 1 + rand() % 6; // pick random die2 value
workSum = die1 + die2; // sum die1 and die2
// display results of this roll
cout << "Player rolled " << die1 << " + " << die2
<< " = " << workSum << endl;
return workSum; // return sum of dice
} // end function rollDice
return 0;
}
void congrats (int CongratPicker) {
switch (CongratPicker) {
case 1:
cout <<"Now's the time to cash in your chips!" << endl;
break;
case 2:
cout <<"Wow. You're so lucky!" << endl;
break;
}
}
void regrets (int SorryPicker) {
switch (SorryPicker) {
case 1:
cout <<"Oh, you're going for broke, huh?" << endl;
break;
case 2:
cout <<"Aw cmon, take a chance!" << endl;
break;
}
}
>>>how do you clear the screen whenever the user wins and continue to play the game?
if you are on DOS/windows
use this function
clrscr();
if you are on DOS/windows
use this function
clrscr();
There are probably a few different ways to do it, but the way I would approach it is read the number into a string
char buf[5];
[0] [1] [2] [3] [4] [5]
------------------------
buf: 1 | 2 | 3 | 4 | 5 |\0 |
------------------------
now you can probably see the solution.
using a character buffer, you can loop across the elements and then sum them up. There's still a few other things you have to do to get it to fly, but I'll leave that as an excercise for you
hope this helps you on your way to solving the assignment
sincerely,
J