Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

en büyük değeri bulmak

Başlatan uardal, 23 Temmuz 2010, 10:11:43

uardal

merhaba arkadaşlar protonda bir dizi değişken içinde en büyük değerli sayıyı nasıl buluruz acaba ?

şimdiden teşekkürler

muhittin_kaplan

max var ama oda diziden seçmez

uardal

hocam benim yapmak istediğim pic in adc portundan sırayla 10 adet ölçüm yapıp bunların herbirini bir değişkene atmak ve aralarında en büyük değerlikli değişkeni bulmak, nasıl yapılır bilmiyorum ama artık bir yol bulcaz.

50Cal

Proton kullanmadım kod yapılarını bilmiyorum ama maksimum bulma algoritması aşağıdaki gibidir.
maxValue = function (array) 
{ 
          mxm = array[0]; 
          for (i=0; i<array.length; i++) 
          { 
                if (array[i]>mxm) 
                { 
                       mxm = array[i];
                }
           } 
            return mxm;
};


http://www.google.com.tr/search?client=opera&rls=tr&q=find+max+in+a+array&sourceid=opera&ie=utf-8&oe=utf-8


caliskan

Ben adc den 255 örnek alıp bu değerleri eeproma yazdım.
Daha sonrada en büyük ve en küçüğünü ayrıştırdım.

KUCUK = EOKUNAN1                
BUYUK = EOKUNAN1

ARTTIR:                                      
EOKUNAN2 = ERead ADRES4
DelayMS 10

If EOKUNAN2 > BUYUK Then
BUYUK = EOKUNAN2
EndIf


If EOKUNAN2 < KUCUK Then
KUCUK = EOKUNAN2
EndIf

ADRES4 = ADRES4 + 1              
If ADRES4 = 255 Then
    Print $FE , 1 : DelayMS 30
Else
GoTo  ARTTIR
EndIf
İnsanların ne kadar kötü olduğunu görmek beni şaşırtmıyor; fakat bu yüzden hiç utanmadıklarını görünce hayrete düşüyorum....

computerboy

bu koduda deneyebilirsin ama uzun yöntem oluyor benim aklıma gelen bu:)

if PULSE1 > PULSE2 And PULSE1 > PULSE3 And PULSE1 > PULSE4 And PULSE1 > PULSE5 And PULSE1 > PULSE6 And
PULSE1 > PULSE7 And PULSE1 > PULSE8 And PULSE1 > PULSE9 And PULSE1 > PULSE10 Then
Enbuyuk= PULSE1 end if

tabi bu kodları 10 adet çoğaltman gerekiyor


uardal

merhaba öncelikle herkese teşekkürler hafta sonu nette olmadığım için cevap yazamadım, 50cal ın kullandığı fonksiyon sanırım protondaki max fonksiyonuna benziyor,onu kullanıp sonuç almaya çalışacağım, caliskan arkadaşınkide güzel görünüyor, en kısa zamanda denemelere başlamak lazım. programcılıkta yeni olduğum için anlamam biraz zaman alıyor :)

uardal

merhaba en büyük sayı bulma sorunumu aşağıdaki gibi çözdüm. sanırım 50cal ın c dili formulüne benziyor, fikirleriyle aydınlatıcı olan arkadaşlara  teşekkürler

For a= 1 To 10
  index = index + 1
  sonuc = LookUpL index ,[DEGER0,DEGER1,DEGER2,DEGER3,DEGER4,DEGER5,DEGER6,DEGER7,DEGER8,DEGER9]
    If sonuc > maxi Then
           maxi = sonuc

tyildizak

Alıntı yapılan: uardal - 26 Temmuz 2010, 12:34:00

For a= 1 To 10
  index = index + 1
  sonuc = LookUpL index ,[DEGER0,DEGER1,DEGER2,DEGER3,DEGER4,DEGER5,DEGER6,DEGER7,DEGER8,DEGER9]
    If sonuc > maxi Then
           maxi = sonuc


"Maxi" değişkeni neye göre değer alıyor? Bir de, for döngüsünü kapatmamışsınız.

uardal

evet hocam kopyala yapıştır yaparken oraları atlamışım satırların hemen altında for  ve if i kapatabiliriz.

For a= 1 To 10
  index = index + 1
  sonuc = LookUpL index ,[DEGER0,DEGER1,DEGER2,DEGER3,DEGER4,DEGER5,DEGER6,DEGER7,DEGER8,DEGER9]
    If sonuc > maxi Then
           maxi = sonuc
endif
next


maxi değişkeninin değerini blirlemek için   lookupl komutunu kullandım  her for döngüsünde sonuç değişkeninin içeriği değişiyor ve eğer sonuç değişkeni maxi değerinden büyükse sonuç değerini maxi ye atıyoruz ve sonuç olarak for döngüsünden çıktığımızda en büyük değer elimizde kalıyor.

saygılar

mufitsozen

maxi'yi sifirlamamissiniz,

eger baslangicda maxide cok buyuk bir deger varsa lookupdan okudugunuz butun degerler ondan kucuk olacaktir.

programin en basina maxi icin tabloda olamiyacak (mesela -50) gibi bir deger girin
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

uardal

o kısımları programın başlangıcında değerlendirdim zaten ben sadece mantık belli olsun diye bu kısmı koydum, ilginiz için çok teşekkürler.