Mantık sorusu

rudes

Üye
Katılım
11 Ocak 2007
Mesajlar
81
Puanları
1
Yaş
40
Merhaba Arkadaşlar
6 Tane intager sayım var bunların herbirisi bir word'e move edilmiş durumda bu sayılar degişken.Ben bu sayıları büyükten küçüğe doğru sıralamak istiyorum.Bunu nasıl yapabilirim.Yorumlarınızı bekliyorum..
 
Compare komutu kullanabilirsin. Bu komut fonksiyonunda küçükse-büyükse-eşitse-eşit değilse gibi özellikler yüklüdür. Büyükten küçükğe sıralama derken nasıl bir sıralama anlayamadım. Ama büyük veya küçük sayı değerlerinden Bool yada Decimal olarak return kodu alabilirsin. Daha komplike işlemleri SCL yada STL diliyle gerçekleştirebilmen mümkün.
 
Bence SCL ile bir blok hazırla. Dongulu bir kodla if then else ile sıralamayı yapabilirsin. Bne bir ara ladder ile yazmaya kalkmıstım ama baya uzun oldu. Internetten C ile yazılmış bir algoritmayı al ve SCL diline uyarla. Bu hem daha hızlı çalışır hem de daha az hafıza kaplar.
 
aldarin ' Alıntı:
Bence SCL ile bir blok hazırla. Dongulu bir kodla if then else ile sıralamayı yapabilirsin. Bne bir ara ladder ile yazmaya kalkmıstım ama baya uzun oldu. Internetten C ile yazılmış bir algoritmayı al ve SCL diline uyarla. Bu hem daha hızlı çalışır hem de daha az hafıza kaplar.
Ladder'da yapmak uzun sürüyor scl dilini bilmediğim için şuan çalışma yapıyorum üzerine.Yardımlarınız için sağolun arkadaşlar..
 
SCL dilinde "bubble sort" tekniği kullanılarak yapılan sıralama işlemine örnek:

Kod:
CONST
LIMIT := 7;
END_CONST

VAR_IN_OUT
  sortbuffer : ARRAY[0..LIMIT] OF INT;

END_VAR

VAR_OUTPUT
  calcbuffer : ARRAY[0..LIMIT] OF

STRUCT
  squareroot : INT;
  square : INT;
END_STRUCT;

END_VAR

VAR_TEMP
  swap : BOOL;
  index, aux : INT;
  valr, resultr: REAL ;
END_VAR

BEGIN
(********************************************************
Part 1 Sorting : According to the "bubble sort" method: Swap
pairs of values until the measured value buffer is sorted.
**********************************************************)

REPEAT
  swap := FALSE;

  FOR index := LIMIT TO 1 BY -1 DO

    IF sortbuffer[index-1] > sortbuffer[index]
    THEN aux :=sortbuffer[index];
       sortbuffer[index] := sortbuffer[index-1];
       sortbuffer[index-1] := aux;
       swap := TRUE;
     END_IF;

 END_FOR;

UNTIL NOT swap
END_REPEAT;
 
Son düzenleme:

Yeni mesajlar

Forum istatistikleri

Konular
129,864
Mesajlar
930,851
Kullanıcılar
452,726
Son üye
ugur Göktürk

Yeni konular

Geri
Üst