turbo c calculations not right

i don't know whats wrong, but it wont show the correct answers or the computation. though it has no errors
this is my source code

#include
#include

float workhrs, overtime, salary, tax, tsalary;
long int rate;
char name[80],choose;



try()
{
clrscr();
textcolor (3);
cprintf("
How many hours have you been working? ");
scanf("%f",&workhrs);


if(workhrs>=100 && workhrs<=25)
{
printf("
WORK HOUR is not VALID!");
getch();
try();
}
else
{
textcolor (3);
printf("
Enter your hourly rate: ");
scanf("%d",&rate);
textcolor (3);
cprintf("


Press any key to compute salary...");
getch();
if(workhrs>40)
{
if(workhrs>=40 && workhrs<=50)
{
overtime=workhrs-40;
salary=(40*rate)+(overtime*40);
}
else
{
overtime=workhrs-40;
salary=(rate*40)+(overtime*40)+200;
}
}
else
{
salary=workhrs*rate;
}




clrscr();



if(salary>8000)
{
tax=salary*.15;
tsalary=salary-tax;

textcolor (15);
cprintf("
Hello %s! Your salary for this month is P%.2f", name, salary);
getch();
clrscr();
gotoxy(1,15);
textcolor (15);
cprintf("
There is a 15 percent tax deduction which is P%.2f",tax);
getch();
clrscr();
gotoxy(1,15);
printf("
Your total salary with 15 percent tax deduction is P%.2f",tsalary);
getch();
clrscr();

}

else
{
printf("
Hello %s %s! Your salary for this month is P%.2f", name, salary);
getch();
}

}
}


main()
{
clrscr();
textcolor (3);
printf("
Enter name: ");
gets(name);
try();
clrscr();
gotoxy(30,45);


printf("
Would you like to try again? Y/N

");
scanf("%s",&choose);
if (choose=='y')
main();
else
{gotoxy(33,11);
textcolor (15);
cprintf("HAVE A NICE DAY!");
getch();}
;

}

Comments

  • [color=Blue]Turbo C has a very easy to use debugger - I am sure if you use it - you will see what is wrong. Set a breakpoint AFTER any input, like that:[/color]
    [code]
    scanf ("%f", &value);
    <-- set bkpt on this line and chk 'value'
    [/code]
    [color=Blue]When program stops in debugger on the next line inspect the variable 'value' and verify that whatever you entered is realy there. Do the same AFTER calculations - verify that all calculations are sound. TC debugger has WATCH window and INSPECT window - see the menu bar items - you will find how to open them. WATCH allows to see how variable changes on every line of the program - you basically watch the variable and continue step line-by-line. INSPECT - once open - must be closed to continue stepping. To put a variable into one of these windows - set a cursor on the variable and use menu item to open appropriate panel.[/color]
  • Please use code tags when posting your code samples. Here is your program reposted with code tags provided (and formatted).
    [code]
    #include
    #include

    float workhrs, overtime, salary, tax, tsalary;
    long int rate;
    char name[80],choose;



    try()
    {
    clrscr();
    textcolor (3);
    cprintf("
    How many hours have you been working? ");
    scanf("%f",&workhrs);


    if(workhrs>=100 && workhrs<=25)
    {
    printf("
    WORK HOUR is not VALID!");
    getch();
    try();
    }
    else
    {
    textcolor (3);
    printf("
    Enter your hourly rate: ");
    scanf("%d",&rate);
    textcolor (3);
    cprintf("


    Press any key to compute salary...");
    getch();
    if(workhrs>40)
    {
    if(workhrs>=40 && workhrs<=50)
    {
    overtime=workhrs-40;
    salary=(40*rate)+(overtime*40);
    }
    else
    {
    overtime=workhrs-40;
    salary=(rate*40)+(overtime*40)+200;
    }
    }
    else
    {
    salary=workhrs*rate;
    }

    clrscr();

    if(salary>8000)
    {
    tax=salary*.15;
    tsalary=salary-tax;

    textcolor (15);
    cprintf("
    Hello %s! Your salary for this month is P%.2f", name, salary);
    getch();
    clrscr();
    gotoxy(1,15);
    textcolor (15);
    cprintf("
    There is a 15 percent tax deduction which is P%.2f",tax);
    getch();
    clrscr();
    gotoxy(1,15);
    printf("
    Your total salary with 15 percent tax deduction is P%.2f",tsalary);
    getch();
    clrscr();
    }
    else
    {
    printf("
    Hello %s %s! Your salary for this month is P%.2f", name, salary);
    getch();
    }

    }
    }


    main()
    {
    clrscr();
    textcolor (3);
    printf("
    Enter name: ");
    gets(name);
    try();
    clrscr();
    gotoxy(30,45);


    printf("
    Would you like to try again? Y/N

    ");
    scanf("%s",&choose);
    if (choose=='y')
    main();
    else
    {
    gotoxy(33,11);
    textcolor (15);
    cprintf("HAVE A NICE DAY!");
    getch();
    }

    }[/code]

    Some comments:

    1) You are using recursion in a manner I believe to be inappropriate. You should be using loops instead of recursion when a user enters an invalid amount of work hours or when the user wishes to repeat the program. In particular, you should never recursively call [italic]main[/italic].

    2) Don't use [italic]gets[/italic]. It is dangerous as it does not prevent the user from entering more characters than is possible for the array to hold. You should instead prefer [italic]fgets[/italic] which allows you to specify the maximum number of characters your buffer can hold.

    3) Avoid compiler/OS specific functions wherever possible.

    4) Upgrade yourself to a better/newer compiler. Turbo C was around back when most of mankind still lived in caves. There are a number of free ones out there that have been created this millennium.

    5)
    [code]if(workhrs>40)
    {
    if(workhrs>=40 && workhrs<=50)
    {
    overtime=workhrs-40;
    salary=(40*rate)+([color=Red]overtime*40[/color]);
    }
    else
    {
    overtime=workhrs-40;
    salary=(rate*40)+([color=Red]overtime*40[/color])+200;
    }
    }[/code]
    Shouldn't overtime be calculated as [b]overtime*rate*1.5[/b] (for time-and-a-half).

    6)
    [code]else
    {
    printf("
    Hello [color=Red][b]%s %s[/b][/color]! Your salary for this month is P[color=Red][b]%.2f[/b][/color]", [color=Blue][b]name[/b][/color], [color=Blue][b]salary[/b][/color]);
    getch();
    }
    [/code]
    Pay attention to how many format specifiers you are using and how many additional arguments you are passing to [italic]printf[/italic].
  • This post has been deleted.
  • This post has been deleted.
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories