Pembahagian integer dan baki


Dalam modul "Ungkapan aritmetik" kami bercakap tentang ciri-ciri operasi bahagi dalam Pascal.
Ingat bahawa untuk data integer (jenis integer) anda boleh menggunakan tiga operasi bahagian:
- pembahagian biasa, mengembalikan nilai jenis sebenar
div - pembahagian integer, apabila kita membuang bahagian pecahan hasil daripada operasi bahagi
mod - pengiraan baki bahagian

INGAT!
Dalam Pascal hasil pembahagian integer dengan integer – ia sentiasa nombor nyata.

Contoh: var a, b, d, e: integer;   c:sebenar; a := 10; b:= 3; c:= a / b; // Jawapan: s = 3.33333333333333E+000 d:= mod b; // Jawapan: d = 1 e := a div b; // Jawapan: e = 3 Operasi ini sangat penting dalam pengaturcaraan. Mereka perlu difahami dan digunakan dengan betul. Dan itu memerlukan latihan!

 

Keperluan untuk menggunakan operasi pengiraan baki bahagian dapat dilihat apabila bekerja dengan digit nombor. 

Mari analisa tugasan berikut:
Nombor tiga digit diberikan. Paparkan semua digit nombor ini dan dapatkan nombor baharu yang dibentuk dengan mengubah suai unit dan ratusan

Soalan paling sukar yang timbul untuk pemula ialah cara mengambil dan mendapatkan digitnya daripada nombor.
Sebenarnya, semuanya diselesaikan dengan mudah, jika anda ingat matematik. Dan matematik memberitahu kita bahawa sebarang nombor boleh diuraikan menjadi jumlah sebutan digit.
Contohnya: 365=3*100+6*10+5*1 . Kami melihat bahawa setiap digit ialah pengganda bagi digit nombor yang sepadan. 
Kami akan menunjukkan cara untuk mendapatkan setiap digit nombor ke dalam pembolehubah yang berasingan, menggunakan contoh membahagikan lajur dengan nombor 10. (Kami mengambil nombor 10, kerana kami mempunyai sistem nombor perpuluhan dan, dengan itu, kami mempunyai istilah digit 1, 10, 100, dsb.)
  

Menganalisis angka itu, anda dapat melihat bahawa  e := n mod 10; // operasi n mod 10 - mengira digit terakhir nombor n (iaitu, unit nombor) 365 mod 10 = 5 d := n div 10 mod 10; // operasi n div 10 - mengurangkan nombor sebanyak 10 kali, iaitu membuang digit terakhir nombor (365 div 10 = 36), // kini kita boleh mengira bilangan puluh dengan menggunakan operasi biasa pada hasil - kira baki selepas pembahagian dengan nombor 10, 36 mod 10 = 6 s := n div 100; // untuk mendapatkan ratusan, cukup untuk membuang dua digit dari sebelah kanan nombor, iaitu bahagikan dengan 10 dua kali (n div 10 div10 atau sama dengan n div 100< /strong>) 365 div 100 = 3
Mempunyai digit nombor yang disimpan, kita boleh membuat sebarang nombor daripadanya dengan mendarab digit yang dikehendaki dengan digit yang sepadan: 
sebagai contoh, baris di bawah akan mendapat nombor baharu daripada nombor asal n, dengan ratusan dan satu disusun semula:
1) bilangan lama yang (disimpan dalam pembolehubah e)  didarab dengan 100 
2) bilangan lama sepuluh (disimpan dalam pembolehubah d)  darab dengan 10 
3) kita hanya boleh mendarabkan nombor lama ratus dengan 1, atau hanya mengambil nilai yang disimpan dalam pembolehubah s
Kemudian hanya tambah nilai dari mata 1, 2 dan 3 dan dapatkan nombor baharu:

n1 := e * 100 + d * 10 + s;

Keseluruhan program akan kelihatan seperti ini: var n, e, d, s: integer; bermula baca(n); e:= n mod 10; d := n div 10 mod 10; s := n div 100; writeln(e, ' ', d, ' ', s, ' ', e * 100 + d * 10 + s); tamat.