PLC ile girilen sayının basamaklarını elde etme

Aslnfkrt

Üye
Katılım
29 Ağu 2019
Mesajlar
90
Puanları
1
Merhabalar, sayı girişine girilen sayının basamak değerini ve en sol basamağında ki rakamı veren bir program yazmak istiyorum,
Basamak değerini sayının logaritmasını alıp bir ekleyip floor yaparak elde ettim ama en sol basamakta ki rakamı nasıl yakalarım?
Yardımlarınız için teşekkür ederim
 
Yazımızda endüstrinin can damarı sayılabilecek PLC’yi inceleyeceğiz.
KNX Standardı, küçük bir rezidansın içerisindeki aydınlatma, perde panjur, klima kontrolünden, Dünya’nın en büyük havalimanlarındaki aydınlatma otomasyonu gibi çözümler için tercih edilen bir Dünya standardıdır.
Kod:
PROGRAM PLC_PRG
VAR
    SAYI: INT;
    BASAMAK:ARRAY[0..4] OF  INT;
END_VAR

Kod:
BASAMAK[0] :=   SAYI MOD(10);
BASAMAK[1] := ((SAYI- BASAMAK[0]) /10) MOD 10 ;
BASAMAK[2] := ((SAYI-(BASAMAK[1]*10   + BASAMAK[0])) /100 ) MOD 10 ;
BASAMAK[3] := ((SAYI-(BASAMAK[2]*100  + BASAMAK[1]*10  + BASAMAK[0]) )/1000) MOD 10 ;
BASAMAK[4] := ((SAYI-(BASAMAK[3]*1000 + BASAMAK[2]*100 + BASAMAK[1]*10 + BASAMAK[0]))/10000) MOD 10;
 
Son düzenleme:
Kod:
PROGRAM PLC_PRG
VAR
    SAYI: INT;
    BASAMAK:ARRAY[0..4] OF  INT;
    i,n,BasamakSayisi,EnBuyukBasamak: INT;
    MaxBasamak: INT:= 4;
    Hesapla: BOOL;
END_VAR
Kod:
    IF Hesapla THEN
        BasamakSayisi :=0;
        Hesapla    := FALSE;
        BASAMAK[0] :=   SAYI MOD(10);
        BASAMAK[1] :=(( SAYI-BASAMAK[0]) /10) MOD 10 ;
        BASAMAK[2] :=(( SAYI-(BASAMAK[1]*10 + BASAMAK[0])) /100 ) MOD 10 ;
        BASAMAK[3] :=(( SAYI-(BASAMAK[2]*100+ BASAMAK[1]*10 + BASAMAK[0]) )/1000) MOD 10 ;
        BASAMAK[4] :=(( SAYI-(BASAMAK[3]*1000+BASAMAK[2]*100+ BASAMAK[1]*10 + BASAMAK[0]))/10000) MOD 10;

        FOR i:=0 TO MaxBasamak DO
            IF BASAMAK[i] <> 0 THEN
                BasamakSayisi         := BasamakSayisi +1 ;
                EnBuyukBasamak        := BASAMAK[i];
            END_IF;
        END_FOR;
    END_IF;
 
Son düzenleme:
Mantık şu; herhangi bir sayıyı 10 a bölümünden kalanı, size o sayının son basamağını verir. Örneğin sayımız 987 olsun bu sayıyı 10 bölümünden kalan 7 dir. X (Mod 10) demek, X sayısının 10 a bölümünden kalanı verir. Dolayısıyla
987 MOD 10 = 7 dir.
Daha sonra 987 - 7 = 980 sayısını elde ederiz, ikinci basamağı(yani 8 i) bulmak için bu sayıyı 10 a bölüp tekrar MOD10 işlemi uygulanır. 980/10 = 98 olup, (98 Mod10) = 8 sayısını yani 2nci basamağı yakalarız. Bu böyle devam eder.
 
Son düzenleme:

Forum istatistikleri

Konular
127,950
Mesajlar
913,860
Kullanıcılar
449,598
Son üye
kadir12366

Yeni konular

Geri
Üst