En büyük ve En küçük sayısı bulmak?

Başlatan dyonizos, 10 Temmuz 2012, 11:19:11

dyonizos

selam arkadaşlar
protonda böyle bir fonksiyon varmıdır?
elimizde 3 adet degisken var

poz1, poz2,poz3

pic in analog girişinden sırayla 3 defa deger okutuyoruz. bu degerlerı buyukten kucuge yada tam tersı bu degıskenlere tanımlayabılıyormuyuz?

mesela 3 defa deger okuttuk
ılk okuttugumuz deger 120
ıkıncı deger                   180
ucuncu deger                 90

poz1=120
poz2=90
poz3=80 gıbı bır ıslemı nasıl yapabılırız?
IF ve ELSE kullanarak bırseyler yapmaya calıstım ama ıyıce karıstı ortalık olmadı. belkıde ben yapamadım :)

FUNKY


sitemizde "bubble sort " örnekleri var inceledin mi...işini görür..

XX_CİHAN_XX

Ben genelde daha sağlıklı olsun diye 6 kez ölçüm alıyorum hatta bazen 10.
Ölçüm sonuçlarını bir dizide biriktiriyorum.
Bu 6 ölçüm içinden en büyük ve en küçük sayıları çıkartıyorum.
Kalan sayıların aritmetik ortalamasını alıyorum ve ta taam temiz bir adc sonucu çıkıyor.

Biraz daha hızlı olsun istersem ölçüm sayısını 6 dan 4 e düşürüyorum.
Peki niye 6 ya da niye 4 ya da niye 10?
Sebebi basit, en büyük ve en küçük ölçüm değerlerini eledikten sonra kalan değerlerin aritmetik ortalamasını alırken toplamı 2 nin katı kadar kaydırmak yetiyor. Dikkat edersen bunlar 2 nin katlarıdır. Yani Toplam sonucu sadece sağa kaydırarak bölme işlemi tek komutta yapılmış olacaktır ;)

Örnek 6 kez ölçüm yaptın.
Bu ölçüm sonuçlarından en büyük ve en küçük sayıyı çıkarttın
Elinde 4 tane ölçüm kaldı. Bunların hepsini toplayıp 4 e böleceksin diyelim.
yapacağın şey toplam değerini 2 kere sağa kaydıracaksın.
Böylece toplam değer 4 e bölünmüş ve ortalaması elde edilmiş olacak.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

JKramer

Adı da yanlış hatırlamıyorsam Olympic Average olması lazım.

dyonizos

ortalama almaya çalışmıyorumki ama ben sizin ortalama alırken yaptığınız en küçük ve en büyük sayısı bulmaya çalışıyorum.

JKramer

#5
Tamam işte, aynı şeyden bahsediyoruz :):
   static u16 temp_max=0;
   static u16 temp_min=1023;

   temp_raw=adc(*temp_channel);

   if(temp_raw>temp_max)
      temp_max=temp_raw;

   if(temp_raw<temp_min)
      temp_min=temp_raw;


Bunu istediğiniz kadar tekrar ettikten sonra en büyük ve en küçük değerler elinizde olacak.

Ek: Aynı şeyden bahsetmiyormuşuz, kusura bakmayın sabah sabah :).

Andromeda

Dizideki   ( I(n) )   ilk sayıyı en küçük  olarak tanımla...
bir sonraki ile karşılaştır..bir sonraki küçükse bu sayıyı en küçük tanımla..
n=n+1 yap
karşılaştırmaya devam et...
sıralama işi var bir de ..
sen bilgisayar olsan nasıl yaparsın..onu düşün...
" Tanrı, iradesini hakim kılmak için yeryüzündeki iyi insanları kullanır, yeryüzündeki kötü insanlar ise kendi iradelerini hakim kılmak için Tanrı'yı kullanırlar." ..." Tanrı'dan mesaj gelmiyor, biz Tanrı'ya mesaj gönderiyoruz"

zakbay

Sıralam algoritmaları diye araştırabilirsiniz
bana da gerekmişti

http://tr.wikipedia.org/wiki/S%C4%B1ralama_algoritmas%C4%B1

3 elemanlı bir dizi tanımlayıp bunu sıralarsanız bir baştaki her zaman en küçük diğer baştaki her zaman büyük olur
Tek dostum çalışmak...

ÜC

Kaç ölçüm yapacaksan o kadar dizi oluşturuyorsun (d1) ver her bir ölçümü bir dizi değişkenine kaydediyorsun. Ksayi değikeni en küçük sayının değerini alır. d2 değişkeni en küçük sayıyı tutan değişkenin index nosunu verir.Büyük sayıyı bulmak için büyük işaretini kullanmalısın (Ksayi en büyük sayının değerini alır)


d2=0
KSayi=d1[0]

FOR I=0 to 4                    ;Dizi değişken sayısı kadar döngü
if d1[i+1]<KSayi then
KSayi=d1[i+1]
d2=i+1
endif
NEXT

ete

PBP da MAX diye bir komut var. En büyüğü bulmakta epeyce başarılı.
D1 , D2 ve D3 şeklinde 3 değişkenin olsun en büyüğünü bulmaya çalışalım.

BUYUK=D1 MAX D2
BuyuK=Buyuk MAX D3

Bu satıra gelindiğinde en büyük değer Buyuk isimli değişkene yerleşmiş olacaktır.
Eminim Protonda da aynı komut vardır. Deneyin.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Maxim

varmış hocam min ve max
helpte yazıyor

yanlız dword ve float desteği yok bu iki komutun..