PDA

View Full Version : [C] Problema stupido


Manugal
24-06-2005, 19:33
Ciao a tutti!!! :)


Ho questo listato in C:

#include <stdio.h>

int main(void){
float salary, salloc, salstat;
float sum_salaries=0, sum_taxes=0;

while(scanf("%lf", &salary) == 1){
salloc=salary*17/100;
salstat=salary*3/100;
salary-=salloc-salstat;
sum_salaries+=salary;
sum_taxes+=salloc+salstat;
}

printf("Sum of salaries: %f\n", sum_salaries);
printf("Sum of taxes: %f\n", sum_taxes);
return 0;
}

Perché mettendo come salario ad esempio 1000 poi quando va a stampare la somma dei salari e la somma delle tasse calcolate mi da sempre 0? Grazie.

Macco
24-06-2005, 20:54
Guarda io non me ne intendo, ma credo che o dichiari double e usi %lf, o dichiari float e usi %f nello scanf.
PS Potrei sbagliare, ma ho fatto un paio di prove e a me sembra funzionare.
Ciao e buon divertimento.

Ubi-Wan
24-06-2005, 21:15
while(scanf("%lf", &salary) == 1){


L'errore e' qui come ha gia' detto Macco. salary e' dichiarato come float...ma tu hai usato per la scanf la specifica di conversione %lf..mentre per i float bisogna usare %f

Manugal
25-06-2005, 11:35
Avete ragione mi sa che è proprio lì il problema a pensarci prima :muro:

Però non dovrebbe leggere lo stesso il valore? Grazie

Ziosilvio
25-06-2005, 18:38
Non puoi passare a scanf un puntatore a float quando si aspetta un puntatore a double; e nemmeno un puntatore a double quando si aspetta un puntatore a float.

Puoi invece passare a printf un double quando si aspetta un float, perché durante il passaggio di argomenti alle funzioni, i float vengono automaticamente convertiti in double, e printf è realizzata anche pensando a questo.