[C] Zaokrąglanie liczb

realwasz

[C] Zaokrąglanie liczb

Post autor: realwasz »

Witam

Czy ktoś może powiedzieć dlaczego podany niżej kod się nie kompiluje:
Problem jest na samym początku funkcji zaokraglanie tj. wyskakuje jakiś komunikat, ale szybko znika:
(Podaję tu np. liczbę \(\displaystyle{ 12.2357}\) , zaokrąglamy do \(\displaystyle{ 3}\) miejsc stąd podajemy \(\displaystyle{ 1000}\) )

Kod: Zaznacz cały

#include <stdio.h>
#include <math.h>

double zaokraglanie(double liczba, int ile)
{
       double licze;
       
       licze=liczba*ile;
       if ((licze - floor(licze)) < 0.5)
        return (floor(licze))/ile;
       else
        return (floor(licze)+1)/ile;
}


int main()
{
    double liczba;
    
    scanf("%lf", &liczba);
    printf("%lf", zaokraglanie(liczba));
    return 0;
}
A i czy jest w C jakaś funkcja która zaokrągla daną liczbę do n miejsc po przecinku, np podaję liczbę: \(\displaystyle{ L=12.2357}\) i zaokrąglając do \(\displaystyle{ 3}\) miejsc po przecinku otrzymuje: \(\displaystyle{ l=12.236}\) ???
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C] Zaokrąglanie liczb

Post autor: Afish »

Kompilator twierdzi, że nie kompiluje się, gdyż:

Kod: Zaznacz cały

prog.c: In function ‘main’:
prog.c:21:5: error: too few arguments to function ‘zaokraglanie’
     printf("%lf", zaokraglanie(liczba));
     ^
prog.c:4:8: note: declared here
 double zaokraglanie(double liczba, int ile)
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C] Zaokrąglanie liczb

Post autor: kalwi »

nie kompliuje się, bo nie ma jak się kompilować. czym jest zmienna ile? I nie, takiej funkcji nie ma (RACZEJ), gdyż najzwyczajniej w świecie taki kod bardzo łatwo napisać. np

Kod: Zaznacz cały

#include <stdio.h>
#include <math.h>
int main()
{
    double i;
    int dokladnosc;
    puts("Podaj liczbe:");
    scanf("%lf", &i);
    puts("Podaj dokladnosc:");
    scanf("%d", &dokladnosc);
    i=i*pow(10,dokladnosc);
    if(i-0.5 <= floor(i))
        i=floor(i);
    else
        i=ceil(i);
    i=i/pow(10,dokladnosc);
    printf("%.*lf", dokladnosc+1, i);
    return 0;
}
ODPOWIEDZ