Programmazione

  • Materia: Programmazione
  • Visto: 6675
  • Data: 07/05/2008
  • Di: Redazione StudentVille.it

Linguaggio C: micro programma gestione garage

esercizio svolto o teoria

A cura di: Administrator

/*
 * Un garage addebita un importo minimo di $2,00 per un parcheggio
 * fino a tre ore.
 * Il garage addebita un'addizionale di $0,50 per ogni ora o frazione
 * di essa che ecceda le tre di base. L'addebito massimo per ogni dato
 * periodo di 24 ore è $10,00.
 * Assumete che nessuna auto parcheggi per più di 24 ore per volta.
 * Scrivete un programma che calcoli e visualizzi gli addebiti
 * per ognuno dei tre clienti che hanno parcheggiato le proprie
 * auto in questo garage ieri.
 * Dovrete immettere le ore di parcheggio per ogni cliente.
 * Il vostro programma dovrà visualizzare i risultati in un formato
 * tabulare ordinato e dovrà calcolare e visualizzare il totale delle
 * ricevute di ieri. Il programma dovrà utilizzare la funzione
 * calculateCharges per determinare l'addebito di ogni cliente.
 * I vostri risultati dovranno apparire nel seguente formato:
 *
 *  Car     Hours     Charge
 *  1         1.5       2.00
 *  2         4.0       2.50
 *  3        24.0      10.00
 *  TOTAL    29.5      14.50
 */
#include <math.h>
#include <stdio.h>
float calculateCharges(float);
int
main(void)
{
	float	hours1, hours2, hours3, hoursTotal = 0;
	float	charge1, charge2, charge3, chargesTotal;
	printf("Enter hours for car 1: ");
	scanf("%f", &hours1);
	hoursTotal += hours1;
	charge1 = calculateCharges(hours1);
	printf("Enter hours for car 2: ");
	scanf("%f", &hours2);
	hoursTotal += hours2;
	charge2 = calculateCharges(hours2);
	printf("Enter hours for car 3: ");
	scanf("%f", &hours3);
	hoursTotal += hours3;
	charge3 = calculateCharges(hours3);
	printf("\n%-8s%8s%8s\n", "Car", "Hours", "Charge");
	printf("%-8d%8.2f%8.2f\n", 1, hours1, charge1);
	printf("%-8d%8.2f%8.2f\n", 2, hours2, charge2);
	printf("%-8d%8.2f%8.2f\n", 3, hours3, charge3);
	chargesTotal = charge1 + charge2 + charge3;
	printf("%-8s%8.2f%8.2f\n\n", "TOTAL", hoursTotal, chargesTotal);
	return (0);
}
float
calculateCharges(float _hours)
{
	float charges = 2.00;	/* fixed */
	if (_hours > 3.00) /* more than 3 hours */
		charges += 0.50 * ceil(_hours - 3.00);
	if (charges > 10.00)
		charges = 10.00;
	return (charges);
}