[prog] Learning C Question
Lancelot Mak
lancelot at honeymak.myftp.org
Mon Oct 31 00:33:45 EST 2005
it's a "special function"(just like perl chop() for the reversed
version) of scanf
u should change each scanf() to this
scanf("%lf", &hours1);
scanf("");
little explanation:
scanf() read stuff up to EOL/Return char (and excluding the EOL itself)
then u will have a problem if u just write like this
scanf("$lf",&hours1);
scanf("$lf",&hours2);
becoz the second scanf() will read the EOL only and nothing
so u need to place "empty" scanf() in between.......
hope this helps........
lancelot
Gretchen Dziengel wrote:
>I'm starting to work my way through a C book I picked up a while ago.
>One of the first programs I'm working on is of course giving me
>trouble.
>
> printf( "Enter hours for customer one.\n" );
> scanf( "%lf\n", &hours1 );
> printf( "Enter hours for customer two.\n" );
> scanf( "%lf\n", &hours2 );
> printf( "Enter hours for customer three.\n" );
> scanf( "%lf\n", &hours3 );
>
>The first scanf wants me to put in two lines. Everything is then
>offset by one. The second value I put in for hours1 turns into hours2
>and the value for hours2 is stored as hours3. Whatever I put in for
>hrours3 is gone.
>
>I've quoted the entire program below because I've compared those lines
>several thousand times and just don't get if they are different.
>Also, I know this program could be much more effective with an array,
>but I'm not quite there yet.
>
>Thanks!
>
>Gretchen
>
>
>
>I compile with
>gcc -g -lm -o 5-09 ex5-09.c
>
>/****************************************
>Exercise 5.9 Page 187
>A parking garage charges a $2.00 minimum fee to park for up to three
>hours. The garage charges an additional $0.50 per hour for each hour
>or part thereof in excess of three hours. The maximum charge for any
>given 24-hour period is $10.00. Assume that no car parks for longer
>than 24 hours at a time. Write a program that will calculate and
>print the parking charges for each of 3 customers who parked their
>cars in this garage yesterday. You should enter the hours parked for
>each customer. Your program should print the results in a neat
>tabular format, and should calculate and print the total of
>yesterday's receipts. The program should use the function
>calculateCharges to determine the charge for each customer.
>****************************************/
>#include <stdio.h>
>#include <math.h>
>
>double calculateCharges( double );
>
>
>int main ()
>{
> double hours1 = 0, hours2 = 0, hours3 = 0;
> double charges1 = 0, charges2 = 0, charges3 = 0;
>
> printf( "Enter hours for customer one.\n" );
> scanf( "%lf\n", &hours1 );
> printf( "Enter hours for customer two.\n" );
> scanf( "%lf\n", &hours2 );
> printf( "Enter hours for customer three.\n" );
> scanf( "%lf\n", &hours3 );
>
> charges1 = calculateCharges( hours1 );
> charges2 = calculateCharges( hours2 );
> charges3 = calculateCharges( hours3 );
>
> printf( "Car\tHours\tCharges\n" );
> printf( "1 \t %.1f \t %.2f \n", hours1, charges1 );
> printf( "2 \t %.1f \t %.2f \n", hours2, charges2 );
> printf( "3 \t %.1f \t %.2f \n", hours3, charges3 );
>
> return 0;
>}
>
>double calculateCharges( double hours )
>{
> double charge = 0;
> double totCharge = 0;
>
> if ( hours <= 3 )
> charge = 2;
>
> if ( hours > 3 )
> charge = 2.5;
>
> totCharge = floor(hours) * charge;
>
> if (totCharge > 10)
> totCharge = 10;
>
> return totCharge;
>}
>_______________________________________________
>Programming mailing list
>Programming at linuxchix.org
>http://mailman.linuxchix.org/mailman/listinfo/programming
>
>
More information about the Programming
mailing list