[ sasa.g @ 07.06.2007. 10:45 ] @
Da li neko moze da mi pomogne oko sledeceg zadatka:

1. Za uneti niz brojeva sa pokretnim zarezom izračunati razliku sume svih članova niza zaokruženih na 2 decimale u odnosu na sumu zaokruženih vrednosti elemenata niza na 2 decimale.

Ja sam pokusao da ga resim i ovo je moje resenje ali nikako ne mogu da ga nateram da radi ono sto se trazi u zadatku

Code:

#include <stdio.h>

main()
{
    float niz[5],p,r,j=0;
    int i;
    float buffer[100];

    for(i=0;i<5;i++)
    {
    printf("Unesite %d. clan niza: ", i+1);
    scanf ("%f",&niz[i]);
    }
    
    for (i=0;i<=5;i++)
    {
        j=j+niz[i];
    }
        sprintf(buffer,"%.2f", j);
        j=atof(buffer);

    for (i=0;i<=5;i++)
    {
        sprintf(buffer,"%.2f", niz[i]);
        p=p+atof(buffer);
    }

    r=j-p;

    printf("\n\nRazlika je: %d\n\n", r);
}
[ sasa.g @ 07.06.2007. 10:47 ] @
Zar u C-u nema funkcija kao sto su round i trunc ???
[ X Files @ 07.06.2007. 12:03 ] @
Pogledaj (uključi) biblioteku:
#include <math.h>
... i vidi šta kaže Help za floor i ceil.

Ovo dole sam copy/paste iz Borland-ovog Helpa:

floor()
Citat:

Header File
math.h

Category
Math Routines

Prototype
double floor(double x);
long double floorl(long double x);

Description
Rounds down.
floor finds the largest integer not greater than x.
floorl is the long double version; it takes a long double argument and returns a long double result.

Return Value
floor returns the integer found as a double. floorl returns the integer found as a long double.


ceil()
Citat:

Header File
math.h

Category
Math Routines

Prototype
double ceil(double x);
long double ceill(long double x);

Description
Rounds up.
ceil finds the smallest integer not less than x.
ceill is the long double version; it takes a long double argument and returns a long double result.

Return Value
These functions return the integer found as a double (ceil) or a long double (ceill).


Code:

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

 int main(void)
 {
    double number = 123.54;
    double down, up;

    down = floor(number);
    up = ceil(number);

    printf("original number     %5.2lf\n", number);
    printf("number rounded down %5.2lf\n", down);
    printf("number rounded up   %5.2lf\n", up);

    return 0;
 }
[ sasa.g @ 07.06.2007. 12:19 ] @
probao sam to ali nije to resenje. floor ce mi broj 4.2 zaokruziti na 5, a ceil ce 4.2 zaokruziti na 4. Meni treba nesto sto radi klasicno zaookruzivanje na 2 decimale po klasicnom matematickom principu.
Znaci kada u printf-u za format ispisa napisem "%.2f" lepo dobijem zaokruzen broj na dve decimale...ali to je samo format ispisa na standardnom izlazu. E, sad... meni treba nesto sto ce mi tako zaokruzen broj sacuvati u nekoj promenljivoj sa kojom cu ja dalje da radim druge stvari.
[ X Files @ 07.06.2007. 13:17 ] @
Odavno nisam u tim vodama, ali probaj ovako:

Code:
    
double number = 4.5648;
//double number = 4.5668;
    
number *= 100.0;
number = ( (long)(number + 0.501) ) / 100.0;

printf( ...


[ mulaz @ 07.06.2007. 14:11 ] @
Code:
ROUND(3)                   Linux Programmer's Manual                  ROUND(3)

NAME
       round, roundf, roundl - round to nearest integer, away from zero

SYNOPSIS
       #include <math.h>

       double round(double x);
       float roundf(float x);
       long double roundl(long double x);

       Compile with -std=c99; link with -lm.

DESCRIPTION
       These functions round x to the nearest integer, but round halfway cases
       away from zero (regardless of the current rounding direction),  instead
       of to the nearest even integer like rint().

RETURN VALUE
       The  rounded  integer  value. If x is integral or infinite, x itself is
       returned.



znaci

double broj = 12.12132;
broj *=100;
broj=round(broj)/100;