petla do while

0
/#include<stdio.h>
int main()
{
FILE *plik;
double a, i, suma, xmin, xmax;
xmin=5;
xmax=2;
suma=0;
do
    {
    printf("podaj liczbe z zakresu 2-5\n");
    scanf("%f", &a);
    if ((a>=2) && (a<=5))
    {
        suma=suma+a;
        if(a<xmin)
        xmin=a;
        if(a>xmax)
        xmax=a;
    }

    else
    {
        printf("liczba jest z poza zakresu\n");

    }
    }while (suma<=10);

printf("suma przekroczyla 10 wynik zostal zapisany do pliku");
plik=fopen("wynik.txt", "w");
fprintf(plik,"wynik dodawania to %f", suma);
fprintf(plik,"wartosc najmniejsza to %f", xmin);
fprintf(plik,"wartosc max to %f", xmax);
plik=fclose(plik);
return(0);
}

dlaczego program gdy wpisze liczbę z zakresu 2-5 pisze że liczba jest z poza zakresu. Gdy typ zmiennych z double na int wszystko działa jak należy?

0
scanf("%f", &a); 

Ta linijka jest poprawna dla typu float.
Dla double powinno być:

scanf("%lf", &a);

Dla int:

scanf("%u", &a);
0

dzięki teraz wszystko działa

1 użytkowników online, w tym zalogowanych: 0, gości: 1