Module: Câu lệnh lặp với điều kiện - while


Problem

6/21

Số lượng ký tự

Theory Click to read/hide

Hãy thử viết một chương trình để giải bài toán sau:

Bạn phải nhập một số (đặt số này nhỏ hơn 3.000.000) và xác định số chữ số trong đó.

Ý tưởng giải pháp


Hãy bắt đầu đếm các chữ số của một số. Ban đầu, bộ đếm là 0. Chúng ta chỉ cần cắt tuần tự chữ số cuối cùng của một số (điều này có thể được thực hiện bằng cách giảm số đó đi 10 lần, sử dụng phép chia số nguyên cho 10) và mỗi lần chúng ta cần tăng bộ đếm lên 1. 
Kết quả là sau khi cắt bỏ tất cả các chữ số, trong bộ đếm, chúng ta sẽ nhận được số chữ số trong số.
Theo một cách khác, thuật toán có thể được xây dựng như sau:
CHO ĐẾN KHI SỐ KHÔNG PHẢI LÀ SỐ 0, HÃY GIẢM SỐ NÓ 10 LẦN VÀ TĂNG SỐ ĐẾM LÊN 1.

<đầu> Chương trình sẽ trông như thế này. var n, đếm: số nguyên; bắt đầu     đọc (n);     đếm := 0;     trong khi n <> 0 để bắt đầu         đếm += 1;         n := n div 10;     kết thúc;     writeln('Số - ', n, ' chứa ', đếm, ' chữ số'); kết thúc. Bạn cần phải biết chương trình này bằng trái tim, bởi vì. trên cơ sở của nó, nhiều vấn đề khác liên quan đến việc tính toán các số bằng chữ số được giải quyết.

Problem

Chạy chương trình. 

Hãy nhìn vào kết quả công việc của cô ấy.
Mọi thứ đều ổn trong cụm từ đầu ra?
Hãy suy nghĩ về cách bạn có thể khắc phục vấn đề này.
số (n) bộ đếm
123 0
12 1
1 2
0 3
1
var n, count: integer; 
2
begin 
3
    read(n); 
4
    count := 0; 
5
    while n <> 0 do begin 
6
        count += 1; 
7
        n := n div 10; 
8
    end; 
9
    writeln('Number - ', n, ' contains ', count, ' digits'); 
10
end. 

     

Program check result

To check the solution of the problem, you need to register or log in!