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
 
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
129,867
Mesajlar
930,872
Kullanıcılar
452,732
Son üye
erencok

Yeni konular

Çevrimiçi üyeler

Geri
Üst