array

2

array

offline
  • Pridružio: 15 Jul 2009
  • Poruke: 150

hehe jeste malo smesno, sta cu kad ne znam, hvala ti, znaci ako sam dobro razumeo, ne mogu ponovo da definisem ono int buffer->volt posto je on vec definisan kao interval? Znaci dovoljno je samo staviti ga u ovakvu formulu i on ce biti ceo broj? Ili cu sad imati opet neku gresku zato sto je buffer->volt interval a kroz folmulu se dobije decimalni broj pa samim tim buffer->volt vise nije interval nego je double? Malo mi je to sve teze za razumeti.

double first = 22.4555;
double second = 344.1;
buffer->volt = buffer->volt * first / second;



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 19 Maj 2011
  • Poruke: 297

Napisano: 17 Jun 2011 19:57

Jel mozes da mi pokazes definiciju strukture "battery_reply", da vidim kojih su tipova clanovi?

Kad napises nesto ovako (recimo):
double nekiBr = 5.48; short nekiDrugiBr  = nekiBr;
Kompajler ti salje upozorenje da dolazi do krnjenja i implicitno cast-uje vrednost (u odgovarajuci tip sa leve strane) i dodeljuje "primaocu".

Dok ovako:
double nekiBr = 5.48; short nekiDrugiBr  = (short)nekiBr;
Explicitno cast-ujes u odgovarajuci tip, s'tim da kompajler kod ovakvog cast-a zna da si svestan mogucih gresaka (od krnjenja) pa ne izbacuje upozorenje.
Tip promenjljive sa leve strane ostaje uvek isti, nemoguce ga je promenuti, hteo ili nehteo/slucajno Very Happy Menja se samo vrednost koju "drzi".

Dopuna: 17 Jun 2011 20:51

Neznam ni sam kako ces da izvedes ono sto si hteo bez imalo predznanja iz C-a, al' 'ajde.

E, ovako, clanice strukture "battery_info_reply":
... u32 batt_vol; u32 level; ...
nagovestavaju sa su unsigned celi (samo pozitivni) brojevi, long (32 bita). Znaci isto kao kad bi napisao:
... unsigned long batt_vol; unsigned long level; ...
verovatno je negde definicija u ostalim hederima, nesto kao:
typedef unsigned long u32;//postedjuje kucanja

Ona funkcija za odredjivanje procenta baterije otpada jer ovu strukturu treba da koristis samo za "citanje" vrednosti (read-only) pa stim bi trebao da je napravis drugacije. Osim ako ne planiras da izmenis onu biblioteku?

Nesto kao:
typedef unsigned char u8;//tip dovoljan da drzi vrednosti od 0 - 255 // ako si siguran 100% da su ovo nominalne vrednosti const double minv   = 3420.0; const double maxv   = 4200.0; const double vrange = maxv - minv; static u8 get_batt_level( struct battery_reply *buffer ) {     double vtt;     vtt = (double)buffer->batt_vol;     if (vtt < minv) return 0;     else if (vtt > maxv) return 100;     return (u8)(((vtt - minv) / vrange) * 100); } ... // e sad ovde negde primas podatke "battery_info_reply" od neke funkcije koju si pozvao, recimo: struct battery_info_reply battinfo; htc_battery_level_compute( &battinfo);//ovo moras ti da vidis koju pozivas ... u8 procenat = get_batt_level(&battinfo); ...//ovde koristis taj rezlutat/procenat, sta si vec mislio



offline
  • Pridružio: 15 Jul 2009
  • Poruke: 150

Ok, kontam nesto, to i jeste moj jedini problem sto ne poznajem c, al trudim se koliko mogu da ga razumem. Ono za level sam resio, kompajlirao, probao i radi pomocu ovoga:
static void htc_battery_level_compute( struct battery_info_reply *buffer ) {     int vtt;     vtt = buffer->batt_vol;     if (vtt < 3420) buffer->level = 0;     else if (vtt > 4200) buffer->level = 100;     else buffer->level = level_table[ vtt - 3420 ]; }

E sad radim na tome da promenim formulu za dobijanje voltaze i za dobijanje currenta, jeste malo teze al valjda cu nekako skontati...hvala ti puno!

Ko je trenutno na forumu
 

Ukupno su 774 korisnika na forumu :: 4 registrovanih, 1 sakriven i 769 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: MilosKop, opt1, S-lash, zziko