Phép chia số nguyên và phần dư


Trong học phần "Biểu thức số học" chúng ta đã nói về đặc điểm của phép chia trong Pascal.
Hãy nhớ rằng đối với dữ liệu số nguyên (loại số nguyên), bạn có thể sử dụng ba phép chia:
- phép chia bình thường, trả về giá trị kiểu real
div - phép chia số nguyên, khi chúng ta loại bỏ phần phân số do phép chia
mod - phép tính phần còn lại của phép chia

HÃY NHỚ!
Trong Pascal kết quả của phép chia một số nguyên cho một số nguyên – nó luôn là một số thực.

Ví dụ: var a, b, d, e: số nguyên;   c:thật; một := 10; b := 3; c := a / b; // Đáp số: s = 3.33333333333333E+000 d := a mod b; // Trả lời: d = 1 e := a div b; // Trả lời: e = 3 Các thao tác này rất quan trọng trong lập trình. Chúng cần được hiểu và sử dụng đúng cách. Và nó cần thực hành!

 

Nhu cầu áp dụng thao tác tính phần dư của phép chia có thể thấy được khi làm việc với các chữ số của một số. 

Hãy phân tích nhiệm vụ sau:
Một số có ba chữ số được đưa ra. Hiển thị tất cả các chữ số của số này và nhận được một số mới được lập bằng cách hoán vị hàng đơn vị và hàng trăm

Câu hỏi khó nhất đối với người mới bắt đầu là làm thế nào để lấy và lấy các chữ số của nó từ một số.
Trên thực tế, mọi thứ đều được giải quyết khá đơn giản, nếu bạn nhớ toán học. Và toán học cho chúng ta biết rằng bất kỳ số nào cũng có thể được phân tích thành tổng của các số hạng bằng chữ số.
Ví dụ: 365=3*100+6*10+5*1 . Ta thấy rằng mỗi chữ số là cấp số nhân của chữ số tương ứng của số đó. 
Chúng tôi sẽ trình bày cách lấy từng chữ số của một số thành một biến riêng biệt, sử dụng ví dụ về chia các cột cho số 10. (Chúng tôi lấy số 10, vì chúng tôi có hệ thống số thập phân và theo đó, chúng tôi có các thuật ngữ chữ số 1, 10, 100, v.v.)
  

Phân tích hình, bạn có thể thấy rằng  e := n mod 10; // thao tác n mod 10 - tính chữ số cuối cùng của số n (nghĩa là đơn vị của số đó) 365 mod 10 = 5 d := n div 10 mod 10; // thao tác n div 10 - giảm số đi 10 lần, tức là loại bỏ chữ số cuối cùng của số (365 div 10 = 36), // bây giờ ta có thể tính số tròn chục bằng cách áp dụng phép toán quen thuộc vào kết quả - tính dư sau khi chia cho số 10, 36 mod 10 = 6 s := n div 100; // để có hàng trăm, chỉ cần loại bỏ hai chữ số bên phải của số đó, tức là chia hai lần cho 10 (n div 10 div10 hoặc tương tự như n div 100< /strong>) 365 div 100 = 3
Có các chữ số đã lưu của số, chúng ta có thể tạo bất kỳ số nào trong số chúng bằng cách nhân chữ số mong muốn với chữ số tương ứng: 
ví dụ: dòng bên dưới sẽ nhận được một số mới từ số ban đầu n, với hàng trăm và hàng đơn vị được sắp xếp lại:
1) số cũ (được lưu trữ trong biến e)  nhân với 100 
2) số cũ của hàng chục (được lưu trữ trong biến d)  nhân với 10 
3) chúng ta có thể chỉ cần nhân số cũ của hàng trăm với 1 hoặc chỉ cần lấy giá trị được lưu trữ trong biến s
Sau đó, chỉ cần thêm các giá trị từ các điểm 1, 2 và 3 và nhận được một số mới:

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

Toàn bộ chương trình sẽ trông như thế này: var n, e, d, s: integer; bắt đầu đọc (n); e := n mod 10; d := n div 10 mod 10; s := n div 100; writeln(e, ' ', d, ' ', s, ' ', e * 100 + d * 10 + s); kết thúc.