Bir sayının rakamlarıyla çalışırken bölme işleminin kalanını hesaplama işleminin uygulanması ihtiyacı görünür.
Aşağıdaki görevi inceleyelim:
Üç basamaklı bir sayı verilir. Bu sayının tüm basamaklarını görüntüleyin ve permütasyon birimleri ve yüzlerle oluşan yeni bir sayı elde edin
Yeni başlayanlar için ortaya çıkan en zor soru, bir sayıdan basamaklarının nasıl alınacağıdır.
Aslında, matematiği hatırlarsanız, her şey oldukça basit bir şekilde çözülür. Ve matematik bize herhangi bir sayının basamaklı terimlerin toplamına ayrıştırılabileceğini söyler.
Örneğin: 365=3*100+6*10+5*1
. Her basamağın, sayının ilgili basamağının çarpanı olduğunu görüyoruz.
Sütunları 10 sayısına bölme örneğini kullanarak bir sayının her basamağını nasıl ayrı bir değişkene dönüştüreceğimizi göstereceğiz. (10 sayısını alıyoruz çünkü ondalık sayı sistemimiz var ve buna göre basamak terimlerimiz var 1, 10, 100, vb.)
Rakamı incelerken,
e := n mod 10; // n mod 10 işlemi - n sayısının (yani sayının birimleri) son basamağını hesaplar 365 mod 10 = 5
d := n div 10 mod 10; // n div 10 işlemi - sayıyı 10 kat azaltır, yani sayının son basamağını atar (365 div 10 = 36),
// artık alıştığımız işlemi sonuca uygulayarak onlukların sayısını hesaplayabiliriz - 10 sayısına bölündükten sonra kalanı hesaplayın, 36 mod 10 = 6
s := n böl 100; // yüzleri elde etmek için sayının sağından iki haneyi atmak, yani 10'a iki kez bölmek yeterlidir (n div 10 div10 veya n div 100< ile aynı) /strong>) 365 böl 100 = 3
Sayının kaydedilen basamaklarına sahip olarak, istenen rakamı karşılık gelen basamakla çarparak bunlardan herhangi bir sayı yapabiliriz:
örneğin, aşağıdaki satır orijinal n sayısından, yüzler ve birler yeniden düzenlenmiş olarak yeni bir sayı alacaktır:
1) eski birlerin sayısı (
e değişkeninde saklanan) çarpı
100
2) eski onluk sayı (
d değişkeninde saklanır) 10 ile çarpın
3) eski yüz sayısını 1 ile çarpabilir veya
s değişkeninde saklanan değeri alabiliriz.
Ardından 1, 2 ve 3 noktalarındaki değerleri toplayın ve yeni bir sayı elde edin:
n1 := e * 100 + d * 10 + s;
Tüm program şöyle görünecek:
var n, e, d, s: tamsayı;
başlamak
oku(n);
e := n mod 10;
d := n div 10 mod 10;
s := n böl 100;
writeln(e, ' ', d, ' ', s, ' ', e * 100 + d * 10 + s);
son.