problem with a simple program

This is a discussion on problem with a simple program within the C++ Programming forums, part of the General Programming Boards category; I am new to C++/C programming and i was doing a little practice with "for" loops. The program asks the ...

  1. #1
    Registered User
    Join Date
    Feb 2009
    Posts
    3

    problem with a simple program

    I am new to C++/C programming and i was doing a little practice with "for" loops.
    The program asks the user to enter a sum of money and prints all possible ways to pay the sum with the following cents : 5, 10, 20, 50
    for example if you enter a sum of 20, it says:

    How many cents ? > 20
    0 50-cent 1 20-cent 0 10-cent 0 5-cent
    0 50-cent 0 20-cent 2 10-cent 0 5-cent
    0 50-cent 0 20-cent 1 10-cent 2 5-cent
    0 50-cent 0 20-cent 0 10-cent 4 5-cent



    The problem:

    How many cents ? > 30
    0 50-cent 1 20-cent 1 10-cent -1 5-cent
    0 50-cent 1 20-cent 0 10-cent 2 5-cent
    0 50-cent 0 20-cent 3 10-cent -1 5-cent
    0 50-cent 0 20-cent 2 10-cent 2 5-cent
    0 50-cent 0 20-cent 1 10-cent 4 5-cent
    0 50-cent 0 20-cent 0 10-cent 6 5-cent


    So it sometimes prints -1 instead of 0 . Some help please.

    The code:
    Code:
    #include <stdio.h>
    #include <conio.h>
    
    int main(void) 
    { 
    int a=0, i=0, j=0, k=0, sum1=0, sum2=0, sum3=0, sum4=0;
    int cent, temp1, temp2, temp3, temp4;
    printf("How many cents ? >");
    scanf("%d", &cent);
    temp1=((int)(cent/50+0.0001));
    temp2=((int)(cent/20+0.0001));
    temp3=((int)(cent/10+0.0001));
    temp4=((int)(cent/5+0.0001));
    
      for(a=temp1;a>=0;a--){ //50 - cent
      sum1=a*50;
      if(sum1==cent){printf("%d 50-cent, %d 20-cent, %d 10-cent, %d 5-cent \n",a, i, j, k);continue;} 
         for(i=temp2;i>=0;i--){ // 20 - cent
               sum2=sum1+(i*20);
               if(sum2==cent){printf("%d 50-cent, %d 20-cent, %d 10-cent, %d 5-cent \n",a, i, j, k);continue;} 
               for(j=temp3;j>=0;j--){ // 10 - cent
                     sum3=sum2+(j*10);
                     if(sum3==cent){printf("%d 50-cent, %d 20-cent, %d 10-cent, %d 5-cent \n",a, i, j, k);continue;}
                     for(k=temp4;k>=0;k--){ // 5 - cent
                           sum4=sum3+(k*5);
                           if(sum4==cent){printf("%d 50-cent, %d 20-cent, %d 10-cent, %d 5-cent \n", a, i, j, k);continue;}
    }
    }
    }
    }
        printf("\nPress any key...");
        getch(); 
        return 0;
    }
    Thanks in advance

  2. #2
    CSharpener vart's Avatar
    Join Date
    Oct 2006
    Location
    Rishon LeZion, Israel
    Posts
    6,424
    1. this is C - so should be moved to the correct forum
    2. cent/50 is int so doing (int)(cent/50+0.0001) is pointless

    3. for(k=temp4;k>=0;k--)
    what will be a value of k when you exit this loop?
    what will be value of k when you enter the next iteration of outher loop?
    what will be printed in case where the sum1 will match the cent?

    if your sum contains only 50-cent monyes why do you need to print values of i,j,k?
    The first 90% of a project takes 90% of the time,
    the last 10% takes the other 90% of the time.

  3. #3
    Registered User
    Join Date
    Feb 2009
    Posts
    3

    progress

    i was able to solve the problem of 5-cent "-1" by using for(k=temp4;k>0;k--). However, i cant do that with other loops. For example
    How many cents ? >100
    prints a "-1" on 10-cent coin when 100 is summed by 5x20-cent.
    At the same time the loop can not be for(j=temp3;j>0;j--) to work properly.

    This problem is solved when i dont print the value of j and k (in the 100 cent example), but i dont like that very much.
    There must be a more elegant jet simple way...

  4. #4
    CSharpener vart's Avatar
    Join Date
    Oct 2006
    Location
    Rishon LeZion, Israel
    Posts
    6,424
    sum2 is buld of a 50-cents and i 20cents, so correct printf will be

    printf("%d 50-cent, %d 20-cent, 0 10-cent, 0 5-cent \n",a, i);

    could you fix same way other outputs?
    The first 90% of a project takes 90% of the time,
    the last 10% takes the other 90% of the time.

  5. #5
    Registered User
    Join Date
    Feb 2009
    Posts
    3

    el fin

    jes, the problem is solved.
    Thanks, vart

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Client-server system with input from separate program
    By robot-ic in forum Networking/Device Communication
    Replies: 3
    Last Post: 01-16-2009, 02:30 PM
  2. Replies: 1
    Last Post: 12-30-2007, 09:08 AM
  3. Running Program Problem
    By warfang in forum C++ Programming
    Replies: 10
    Last Post: 03-28-2007, 02:02 PM
  4. simple login program problem
    By suckss in forum C Programming
    Replies: 11
    Last Post: 11-11-2006, 04:02 PM
  5. Problem with a simple program
    By Salgat in forum C Programming
    Replies: 10
    Last Post: 06-15-2006, 05:57 PM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21