Poslao: 15 Maj 2012 16:13
|
offline
- crusher
- Ugledni građanin
- Pridružio: 15 Maj 2012
- Poruke: 396
|
E ovako, nov sam na forumu i mnogo me interesuju kompjuteri kompjuteri. Sad sam poceo i da ucim programiranje C. Imam samo 13 godina. Imam knjigu Programiranje na jeziku C od Augie Hansen.
Radim u programu C-Free 5.0.
Stigao sam do 3. poglavlja do racionalnih tipova sa funkcijama float i double.
Tu ima jedan primer koji ja ne razumem.
#include <stdio.h>
#include <stdlib.h>
int
main()
{
/* deklaracije podataka */
float f_pro;
double d_pro;
/* dodeli vrednost promenljivama */
f_pro = 106.11;
d_pro = -0.0000654;
/* stampaj vrednosti podataka na razne nacine */
printf("Promenljiva f_pro = %2f\n", f_pro);
printf("Promenljiva d_pro = %.101f\n", d_pro);
printf("Promenljiva f_pro = %e\n", f_pro);
printf("Promenljiva d_pro = %G\n", d_pro);
return 0;
}
Prvo sto ne razumem je zasto pise da je Promenjiva f_pro = 106.110001, a stavio sam da pise da je 106.11 i to isto vazi i za double, pise da je d_pro = -0.00006540000000000000400000000000000400000000000, a stavio sam da je -0.0000654.
Onda isto i ne razumem nista i za ove specifikatore konverzije %e i %G.
Nadam se da ste me razumeli i da cu dobiti odgovor.
Hvala unapred.
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 15 Maj 2012 18:18
|
offline
- NIx Car
- Legendarni građanin
- Més que un club
- Glavni vokal @ Harpun
- Pridružio: 27 Feb 2009
- Poruke: 3898
- Gde živiš: Novi Sad,Klisa
|
%.101f kaze da se taj broj "zaokruzi" na 101 decimalu...
%e
"%e" is the control string used to repesent the float and double value in exponential form.
For example:
float f=223.30;
printf("%e",f);
output of above statement will be
2.23300e+02
znaci %e ti predstavlja float i double brojeve u eksponencionalnom obliku.
|
|
|
|
Poslao: 15 Maj 2012 18:22
|
offline
- crusher
- Ugledni građanin
- Pridružio: 15 Maj 2012
- Poruke: 396
|
Hvala ti za ovaj odgovor, ali zasto se ono 106.11 kad se pokrene ispise 106.110001, i ako bi mogao da mi malo bolje objasnis za ovo %e.
|
|
|
|
Poslao: 15 Maj 2012 19:53
|
offline
- NIx Car
- Legendarni građanin
- Més que un club
- Glavni vokal @ Harpun
- Pridružio: 27 Feb 2009
- Poruke: 3898
- Gde živiš: Novi Sad,Klisa
|
u ovom slucaju eksponent ti kaze koliko nula postoji iza tog zadnjeg broja.
|
|
|
|
Poslao: 15 Maj 2012 19:59
|
offline
- crusher
- Ugledni građanin
- Pridružio: 15 Maj 2012
- Poruke: 396
|
Hvala ti, ali ako bi mogao i da mi kazes i za ono drugo sto ne razumem.
|
|
|
|
Poslao: 15 Maj 2012 20:01
|
offline
- DenisUA98
- Građanin
- Pridružio: 31 Dec 2011
- Poruke: 109
- Gde živiš: Novi Pazar
|
Program ti ispisuje 106.110001 zbog toga sto si zaboravio tacku ispred 2f\n", to jest
printf("Promenljiva f_pro = %.2f\n", f_pro);
E onda ispisuje dve decimale to jest taj broj koji zeliš 106.11.
I ja sam relativno skoro uzeo da učim C jezik, i koliko sam ja shvatio taj deo poglavlja ovo %e i %f služe za predstavljanje realnih brojeva, to jest pomoću njih kompajler čita podatke na izlazu.
mycity.rs/must-login.png
Poz
|
|
|
|
|
Poslao: 15 Maj 2012 20:29
|
offline
- NIx Car
- Legendarni građanin
- Més que un club
- Glavni vokal @ Harpun
- Pridružio: 27 Feb 2009
- Poruke: 3898
- Gde živiš: Novi Sad,Klisa
|
%g ti je slican kao i %e samo sto za razliku od njega on ti odmah zaokruzuje na 2 decimale i ispisuje koliko nula kasnije imas (probaj da umesto printf("Promenljiva d_pro = %G\n", d_pro); stavis printf("Promenljiva d_pro = %3\n", d_pro); ili umesto printf("Promenljiva f_pro = %e\n", f_pro);
da stavis printf("Promenljiva f_pro = %g\n", f_pro); ,tako ces najlakse uociti razliku )
|
|
|
|
Poslao: 15 Maj 2012 20:40
|
offline
- DenisUA98
- Građanin
- Pridružio: 31 Dec 2011
- Poruke: 109
- Gde živiš: Novi Pazar
|
Ja sam uzeo knjigu od Milana Čabarkape, mada imaš i ovde par zanimljivih tutoriala za C i C++
Link
pa ti vidi, procitaj i provežbaj.
Kad naučiš C mnogo će ti biti lakše da kreneš dalje na C++ i C# pa i na ostale jezike. Bitno je da tebe ovo interesuje i da si uporan, sve će posle doći na svoje ako redovno vežbaš.
|
|
|
|
Poslao: 15 Maj 2012 20:44
|
offline
- crusher
- Ugledni građanin
- Pridružio: 15 Maj 2012
- Poruke: 396
|
Hvala svima za pomoc, mislim da sam ukapirao da %e dodaje nule a da %G smanjuje nule.
Np.
%e, dodaje nule na kraju broja, a
%G, skida nule na pocetku broja.
Hvala svima.
|
|
|
|