|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2005
Messaggi: 406
|
[C]Dubbi su uso di una funzione
Sto facendo un esercizio per il calcolo dei costi di un parcheggio.
La richesta è calcolare i costi di un parcheggio sapendo che: -fino a 3 ore il costo è fisso a 3.00 $; -dopo le 3 ore costa in aggiunta 0.50 $ per ogni ora in più. Al momento ho tirato fuori questo programma (ancora da raffinare per quanto riguarda il secondo punto): Codice:
/*Programma sull'uso della funzione calcolaAddebito*/
#include <stdio.h>
#include <stdlib.h>
float calcolaAddebito(float); /*Prototipo della funzione*/
main()
{
float tempo; /*Definisco le variabili del main*/
printf ("Inserire le ore di parcheggio della vettura (es. 4.5, max 24.0)\n");
scanf ("%.1f", &tempo);
printf ("L'addebito e': %.2f$\n", calcolaAddebito(tempo));
/*calcolaAddebito(tempo) è la funzione chiamante*/
system("pause");
return 0;
}
/*Definizione della funzione calcolaAddebito*/
float calcolaAddebito(float ore)
{
float s = 0.50, max = 10.00, addebitomin = 3.00, addebito; /*Variabili della funzione*/
if (ore > 3.0) {
addebito = addebitomin + s * ore;
}
else
addebito = addebitomin;
return addebito;
}
Errori di sintassi non ce ne sono, in qualche modo non viene valutato il fattore "+ s * ore". Mi sapete aiutare? |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Aug 2008
Messaggi: 1
|
Ciao,
provo a risponderti io, pur non essendo espertissimo di C. Ho provato il codice, l'errore é sull'istruzione scanf, che non sono sicuro supporti i comandi per la formattazione dei dati: così come l'hai scritta tu, nella variabile "tempo" viene memorizzato sempre 0. Basta tu la sostituisca con una semplice scanf("%f",&tempo); , e riservi poi la formattazione solo ai dati di output. Il resto del codice é OK. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2005
Messaggi: 406
|
Ecco.
Ti ringrazio, adesso funziona perfettamente. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Non dovrebbe invece, perché stai moltiplicando per 0.5 € tutte le ore trascorse se il parcheggio è durato più di 3 ore:
Codice:
float calcolaAddebito(float ore)
{
float s = 0.50, max = 10.00, addebitomin = 3.00, addebito; /*Variabili della funzione*/
if (ore > 3.0) {
addebito = addebitomin + s * ore;
}
else
addebito = addebitomin;
return addebito;
}
Codice:
float calcolaAddebito(float ore)
{
float result = 3.0f;
if (ore > 3.0f)
{
result += ((ore - 3.0f) * 0.5f);
}
return result;
}
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:08.




















