Citat:
mordor:Kapiram da je ovo verovatno jednostavno ali ja nikako nemogu da shvatim kako je ovo resenje zadatka... Tako da bih zamolio da mi ga neko objasni...
Kako nisi konkretno naveo sta ti nije jasno, pretpostavljam da je to svrha privremene promenljive "p".
Ako se npr. kao ulazne vrednosti unesu brojevi: 11(a), 33(b), 22(c). U prvom i drugom "if" poredjenju (u navedenom programu) vraca se netacno (nije 11 > 33, kao ni 11 > 22), pa se izostavlja zamena vrednosti u promenljivama. U trecem "if" poredjenju, uslov je zadovoljen i zamenjuju se vrednosti u promenljivama b i c, koristeci upravo privremenu promenljivu "p" koja je sluzi da bi se sacuvala vrednost jedne od dve promenljive, cije se vrednosti zamenjuju.
Sto se tice "izbacivanja nebuloznih brojeva", nije do poziva funkcije printf() vec scanf(). Naime,
Code:
canf ("%lf%lf%lf", &a, &b, &c);
treba zameniti sa
Code:
scanf ("%lf", &a);
scanf ("%lf", &b);
scanf ("%lf", &c);
Ako ti zamena vrednosti u promenljivama jos uvek nije jasna, program mozes napisati i bez njega s tim sto (npr. u sledece programu) resenje bilo manje efikasno nego u prethodnom (velicina programa i brzina izvrsavanja, ako je to u opste bitno za ovako mali program):
Code:
#include<stdio.h>
int main() {
double a, b, c;
printf ("Unesite a, b, c:");
scanf ("%lf", &a);
scanf ("%lf", &b);
scanf ("%lf", &c);
/*if (a>b) { p=a; a=b; b=p; }
if (a>c) { p=a; a=c; c=p; }
if (b>c) { p=b; b=c; c=p; }*/
if (a > b && a > c)
if (b > c) printf("%lf %lf %lf\n", c, b, a);
else printf("%lf %lf %lf\n", b, c, a);
if (b > a && b > c)
if (a > c) printf("%lf %lf %lf\n", c, a, b);
else printf("%lf %lf %lf\n", a, c, b);
if (c > a && c > b)
if (a > b) printf("%lf %lf %lf\n", b, a, c);
else printf("%lf %lf %lf\n", a, b, c);
/*printf ("Urednjeno:%f %f %f\n", a, b, c);*/
return 0;
}