# Thread: New Programmer in College

1. ## New Programmer in College

Im taking a class with a book called C by Dissection, Pretty good book so far no complaints. I am just having problems with a lil bit of the code and understanding the the if statements. Basically what I need it to say is :

************************************************** ************************************************** ****

Adjust your program to allow for cases where the user either breaks even or loses money. If the user breaks even, print out the following statement:

You have broken even from selling goldfish.

If the user loses money, print out a statement of the following format:

Your loss from selling goldfish is \$XX.XX.

************************************************** ************************************************** ****

Here is a sample of my code. Any suggestions would be greatly appreciated as I am new to the programming world and am VERY LOST:

Code:
```#include <stdio.h>

int main(void)

{

float length1,width1,height1,area,volume,total,sum1,sum2,finalsum,revenue,profit;
int fishsum;
#define PRICE1 .02
#define PRICE2 .005

printf("\nWhat is the length of your goldfish tank in inches? ");
scanf("%f",&length1);
printf("\nWhat is the width of your goldfish tank in inches? ");
scanf("%f",&width1);
printf("\nWhat is the height of your goldfish tank in inches? ");
scanf("%f",&height1);

area = (length1  * height1 * 2) + (height1 * width1 * 2) + (length1 * width1);
volume = (length1  * width1  * height1);
fishsum = volume / 250;
sum1 = PRICE1 * area;
sum2 = PRICE2 * volume;
finalsum = sum1 + sum2;
revenue = fishsum * 5;
profit = revenue - finalsum;

if (profit > 0)
{
printf("\nYour loss from selling goldfish is \$%.2f. \n", profit);
}
else
{
if (profit < 0)
{
printf("\nYour profit is \$%.2f. \n", profit);

}
}
return 0;
}```

2. 1) You'll want to read the forum Announcements. They'll cover how to use [code] tags.
2) When using floating point numbers, you must make all of your comparisons floating point numbers also. As such, you want something like this instead:
Code:
```if( foo < 0.0 )
...do whatever...```
3) When stating a problem, don't just post code, tell us:
a) what it does that it shouldn't
b) what it doesn't that it should
c) any errors or warnings you get
d) something else I'm forgetting but have posted recently :hic:

Quzah.

3. Yeah sorry I caught that code thing once I had already posted! Its fixed now!

4. Edit your program, and wherever you have:

.x make it 0.x
x make it x.0

And then see if that helps. It'll also help if you state what it's supposed to give you for a given set of input. For example, if the input is as follows:
1
3
5

and the expected output is:
10

but you get:
14

Then say as much. It helps in debugging.

Quzah.

5. When I run the program my input is:
6
6
6

Your loss from selling goldfish is \$4.68.

When I input these numbers I do get my desired output.
However, my next input is supposed to be :
24
12
16

Your profit from selling golfish is \$38.16

Your profit from selling goldfish is \$-38.16

So, basically it's the negative sign in the profit thats giving me trouble.

Sorry for the previous postings, but I am new here. Thanks for showing me the ropes.

Bronz

6. you have your if statements wrong
Code:
```if (profit > 0)
{
printf("\nYour loss from selling goldfish is \$%.2f. \n", profit);
}
else
{
if (profit < 0)
{
printf("\nYour profit is \$%.2f. \n", profit);

}
}```
should be
Code:
```if (profit < 0)
{
printf("\nYour loss from selling goldfish is \$%.2f. \n", profit);
}
else if (profit > 0)
{
printf("\nYour profit is \$%.2f. \n", profit);
}

/****
else
{
printf("\nYou broke even!");
}
****/```
apart from getting the '<' and '>' operators around the wrong way, you werent using 'else if' properly.

7. thank the help. I appreciate it.

bronz

8. I'm having a similar problem with the same program. Strange that we have the exact same homework. You wouldn't be chance be attending ucf would you?

Anyway here is what my code looks like.

Code:
```#include <stdio.h>
int main( )
{
/* I used the int function to define totalfishsale because we cant have a fraction or
.xx of a fish.*/
int totalfishsale;

/* First I defined the variables via the double function length, width and height as l, w, and h.
I also defined priceperinch, maintenance, profit, fishprice, and cost here. */
double l, w, h, cost, priceperinch = 0.02, maintenance = 0.005, profit, fishprice = 5.00;

/* The first print and scan functions prompt the user for the length of the fish tank in inches*/
printf("What is the length of your fish tank in inches?\n");
scanf("%lf", &l);

/* The second print and scan functions prompt the user for the width of the fish tank in inches */
printf("What is the width of your fish tank in inches?\n");
scanf("%lf", &w);

/* The third print and scan functions prompt the user for the height of the fish tank in inches */
printf("What is the height of your fish tank in inches?\n");
scanf("%lf", &h);

/* This Equation calculates the cost of maintenance and construction of the fish tank */
cost = ( ( (l * w) + (h * l * 2) + (w * h * 2) )  * priceperinch ) + ( ( l * w * h ) * maintenance );

/* This equation calculates the total profit for the amount of fish sold at the fishprice */
totalfishsale = ( ( l * w * h )/250.0 ) * fishprice;

/* This equation subtracts the cost of production from the total profit for the amount of fish sold */
profit = totalfishsale - cost;

if ( profit < 0.0 )
{
printf("\n Your loss from selling fish is \$%.2f\n", profit);
}
else if ( profit > 0.0 )
{
printf("\n Your profit from sellling fish is \$%.2f\n", profit);
}
else
{
printf("\n You break even from selling fish.\n");
}

}```
Now when i input the variable 6, 6, and 6 instead of getting 4.68 I'm gettting -0.68. I've looked it over a number of times and compared my code to bronson's but i can't seem to figure out what's wrong. I'm thinking maybe it's a format issue or something? I don't know I'm still really new to the whole coding business since I've only ever done html before.

-matt

9. Originally Posted by lysol
I'm having a similar problem with the same program.
Now when i input the variable 6, 6, and 6 instead of getting 4.68 I'm gettting -0.68. I've looked it over a number of times and compared my code to bronson's but i can't seem to figure out what's wrong. I'm thinking maybe it's a format issue or something? I don't know I'm still really new to the whole coding business since I've only ever done html before.

-matt
So, the first thing is to write some code. You've done that.
Next compile it and eliminate errors, notice warnings, etc. You've done that.

Now run with a test case for which you know the answers.

OK so far? Time for more testing.

Not OK? Time for debugging.

Go over the code. You've done that (I assume). Can't see anything wrong? What's the next step?

PUT IN SOME prinf() statements at strategic locations:

After the program has acquired input from the user, print out the values that the program is going to use (so you can see if there was any format errors, etc.)
So, put the following just before the cost calculation.

Code:
`  printf("You entered: l = %f, w = %f, h = %f\n", l, w, h);`

If you have complicated calculations you might want to break them down and print out partial results.

In this case, just put the following after the cost calculation:
Code:
`    printf("cost = %f\n", cost);`
and put the following after the totalfishsale calclulation:
Code:
`    printf("totalfishsale = %f\n", totalfishsale);`
Get the idea?

The idea is for you to learn about progamming, and this means for you to learn something about debugging. The most powerful debugging tool: your brain. The second most powerful debugging tool: printf() (or cout << for you c++ fans). This wonderful forum certainly appears on my list of debugging tools, but not in the top 2.

Regards,

Dave

10. Thankyou sooooooo so so so so much. Printf statements saved my life. I figured it out, i guess there was something in there wrong with my equation,
Code:
`	totalfishsale = ( ( l * w * h )/250.0 ) * fishprice;`
I'm guessing it was a float/double to integer conversion problem? I fixed it by dividing the equation into two parts and declaring a new variable:

Code:
```/* This equation calculates the total profit for the amount of fish sold*/
totalfishsale = ( ( l * w * h )/250.0 );

/* This equation calculates revenue by multiplying totalfishsale by fishprice*/
revenue = totalfishsale * fishprice;

/* This equation subtracts the cost of production from the total profit for the amount of fish sold */
profit = revenue - cost;```
Now i just have one more problem, i'm getting -4.68 as the output for my loss calculation, is there a way i can drop the negative sign without throwing off the if statement since it's assumed that 4.68 is the loss?

11. Code:
`printf("\n Your loss from selling fish is \$%.2f\n", profit * -1.0);`

12. ah thankyou much. I was throwing positive and negative signs all over the place haha.

13. Or you can just do -profit instead of profit * -1.0.

14. Originally Posted by Dave Evans
The most powerful debugging tool: your brain. The second most powerful debugging tool: printf() (or cout << for you c++ fans).
gdb has to have a place in there somewhere too

15. Although I'm glad the problem has been solved, I have one thing to point out:
>>you werent using 'else if' properly.
It was used properly; else if(...){} is the same as else{if(...){}}, except in the first example the redundant {} around the if(){} were dropped since if(){} counts as a single block of code. But the original code was perfectly valid.