matematiksel işlemler ve lcd de gösterim sorunu

Başlatan sezaiv, 19 Haziran 2008, 23:32:06

sezaiv

merhaba arkadaşlar hayırlı akşamlar

benim size bir sorum olacak
5 adet değişken var ve bunlar
a,b,c,d,e olsun ve ben bunlara a*100+b*40+c*605+d*10+e*5 işlemini uygulayıp değer değişkenine atmak istiyorum ve daha sonra değer değişkenini 100 e bölüp float tipindeki toplam değişkeninde gönderip toplam değişkenini de lcd de görüntülemk istiyorum ama yapamıyorum nasıl yapabilirim yardımcı olursanız sevinirim.
sezaiv

picusta

a,b,c,d ve e degiskenlerini hangi cinsten tanimladin?
deger degiskeni islemi alabilecek kapasitede mi? (oveflow durumu olusuyor mu?)
islemi tek satir yerine birkaç satira yay.
ilgili kodu buraya koyarsan daha çok yorum alabilirsin.

tnen

deger degişkenin float olmalı
a*100+b*40+c*605+d*10+e*5 bu toplam deger sonucta 100 e bolunecekse deger/100 = a+b*0.4+c*6.05+d*0.1+e*0.05 şeklinde hesaplattır bu sayede deger tanımladığın degeri aşma ihtimali daha az olur.

sezaiv

deger-a-b-c-d-e değişkenleri int türünde
toplam float türünde olacak

ve (a x 100)+( b x 20)+(c x 25)+(d x 10)+(e x 5) = deger

toplam=deger/100 olacak

yapmak istediğim bu ve float türündeki toplam değişkeninide

printf(lcd_putc,"%f",toplam);

şeklinde lcd de göstermek istiyorum fakat float değişkenini 0,00 şeklinde gözüküyor daima
sezaiv

Gurkan-Demirbas

Merhabalar,
CCS bilmiyorum; ama, CCS'de LCD'ye gönderim formatlarını irdelemek gerekir bence; float tipi değişkeni gönderebiliyormusun ki? PBP'de  (bildiğim kadarıyla !..) bu mümkün değil.

Baktın olmuyor; tek çare (Ki muhtemelen bu yöntemi düşünmüşsündür)
sayi1 ve sayi2 ==> integer
deger değişkenini double integer olarak tanımla
işlemini yaptıktan sonra 100'e böldürüp sayi1 değişkenine kaydet; integer olduğu için virgülden sonraki sayıyı atacaktır.
==> (deger - sayi1 x 100) = sayi2 sana virgülden sonraki sayıyı verir.
ikisini LCD'ye ayrı ayrı gönderirsin.

iyi çalışmalar
Gürkan

iyonosfer

@sezaiv

Yazdığın kodun ilgili kısmını paylaşsaydın daha doğru karar verebilirdik.
int8 a,b,c,d,e;
int32 deger;
float toplam;

deger = (a*100) + (b*20) + (c*25) + (d*10) + (e*5) ;
toplam = deger/100;
printf(lcd_putc,"%f",toplam);


bu şekilde bir dene

kolay gelsin
Blog Sayfam: www.teknobakis.com