# Thread: problem getting decimal not to = 0

1. ## problem getting decimal not to = 0

Ok here is my program
Code:
```/*
Project 5 solution
11/14/2005
by Phil Pliuskonis
*/

#include<stdio.h>

// Function prototypes
void title(void);
void initial(void);
void inputrate(void);
void inputdata(void);
void process(void);
void unit_price(void);
void sales_cost_ammt(void);
void item_prof(void);
void output_1(void);
void totals(void);
void loop_out(void);
void high_prof(void);
void calc_ta(void);
void rpt_out(void);
void item_number(void);
// Data declarations

int code[20];
int qty[20];
int ucost[20];
int uprice[20];
int saleamt[20];
int costamt[20];
int itemprof[20];

int tsales, tcost, tunits, ttax, tprof, hiprof, hicode, avgprof, j, x, i, p, q, r, w, t;
float profrate, trate;
char more_item;

main()
{
title();
initial();
inputrate();
item_number();
while (more_item !='N')
{
process();
}

calc_ta();

rpt_out();
return 0;
}
void title(void)
{
printf("\nProject 5 by: Phil Pliuskonis\n");
return;
}
void inputdata(void)
{

for (x=0; x<j; ++x)
{
printf("\nInput item code:  ");
scanf("%d", &code[x]);
}

for (x=0; x<j; ++x)
{
printf("\nInput item quantity: ");
scanf("%d", &qty[x]);
}

for (x=0; x<j; ++x)
{
printf("\nInput unit cost:  ");
scanf("%d", &ucost[x]);
}
return;
}

void inputrate(void)
{

printf("\nInput tax rate (decimal number) : ");
scanf("%f", &trate);
printf("\nInput profit rate (decimal number) : ");
scanf("%f", &profrate);
return;
}
void item_number(void)
{
printf("\n How many items do you have to input today? :");
scanf("%d", &j);
return;
}

void initial(void)
{

tsales = tcost = tunits = hiprof = j = p = q = r = w = x = i = t = 0;
more_item = 'Y';
return;
}
void process(void)
{
inputdata();
unit_price();
sales_cost_ammt();
item_prof();
output_1();
totals();
high_prof();
loop_out();
return;
}
void unit_price(void)
{
for (t=0; t<j; ++t)
{
uprice[t]= ucost[t] * profrate + ucost[t];
}

return;
}
void sales_cost_ammt(void)
{
for (p=0; p<j; ++p)
{
saleamt[p] = qty[p] * uprice[p];
costamt[p] = qty[p] * ucost[p];
}

return;
}

void item_prof(void)
{
for (q=0; q<j; ++q)
{
itemprof[q] = saleamt[q] - costamt[q];
}

return;
}

void output_1(void)
{
printf("%4s  %13s  %9s %10s %13s %12s %11s\n", "Item", "Quantity Sold", "Unit Cost", "Unit Price", "Sales Ammount", "Cost Ammount", "Item Profit");
for ( i = 0; i < j; ++i )
{
printf("%4d  %13d  %9d %10d %13d %12d %11d\n", code[i], qty[i], ucost[i], uprice[i], saleamt[i], costamt[i], itemprof[i]);
}
return;
}

void totals(void)
{
for (w=0; w<j; ++w)
{
tsales = tsales + saleamt[w];
tcost = tcost + costamt[w];
tunits = tunits + qty[w];
}

return;
}
void high_prof(void)
{
for (r=0; r<j; ++r)
{
if (itemprof[r] > hiprof)
{
hiprof = itemprof[r];
hicode = code[r];
}
}

return;
}
void loop_out(void)
{
printf("\n Are there any more items to process? (Y/N): ");
fflush(stdin);
scanf("%c", &more_item);
if (more_item == 'n')
{
more_item = 'N';
}

return;
}
void calc_ta(void)
{

tprof = tsales - tcost;
avgprof = tprof / tunits;
ttax = trate * tsales;
return;
}
void rpt_out(void)
{

printf("Total sales: %d\n", tsales);
printf("Total Cost: %d\n", tcost);
printf("Total profit: %d\n", tprof);
printf("Average profit: %d\n", avgprof);
printf("Total tax: %d\n", ttax);
printf("High profit: %d\n", hiprof);
printf("High item code: %d\n", hicode);
return;
}```

Here is the output
Code:
```Item  Quantity Sold  Unit Cost Unit Price Sales Ammount Cost Ammount Item Profit
121             75         50         50          3750         3750           0
145             50        100        100          5000         5000           0
201             40        150        150          6000         6000           0
225             10        300        300          3000         3000           0
275             22        450        450          9900         9900           0
331             20        600        600         12000        12000           0
335             21        700        700         14700        14700           0
360             10       1000       1000         10000        10000           0
444             15        500        500          7500         7500           0
445             20        500        500         10000        10000           0

Are there any more items to process? (Y/N): n
Total sales: 81850
Total Cost: 81850
Total profit: 0
Average profit: 0
Total tax: 0
High profit: 0
High item code: 0```
Now as you can see, I am having trouble getting the correct output.
I narrowed it down and determined that it is all happening because profrate is pretty much = 0.

I input it correctly when I run the program (is supposed to be .2) but I can't figure out why it doesn't take. In the output it keeps acting like 0.

We are re visiting this program (for school), and the first time I did it I couldn't get it to work either. I ended up hardcoding in profrate =.2. That won't work this time however because the assignment requires that it be from input.

2. >Now as you can see
Can you show us what output you're expecting? Don't assume that we're as familiar with your project requirements as you are.

>In the output it keeps acting like 0.
As wild speculation, I imagine the actual value is less than 0, but since you output the values as integers, the precision is cut off and all you have left is 0.

3. All of the correct outputs are integers except for average profit. So I will need to change that, but that shouldn't affect the other outputs

This is what the output is supposed to be
http://clem.mscd.edu/~morrellj/cms21...cts/proj3s.htm
(under Test Run and pwd Command near the bottom of the page)
Except don't pay attention to the formatting, all the info for this one will need to be in a table like format.

Really the only problem is profrate is = 0 and not the input value

4. Do you have to float things that will be using a decimal number even if the output isn't a decimal?

5. Never mind!
I got it. I don't even know what I did, but it works now.
I did set the avg profit to float. Maybe that was it.