Module: Koşullu döngü deyimi - while


Problem

6/21

Sayı basamakları

Theory Click to read/hide

Aşağıdaki problemi çözmek için bir program yazmaya çalışalım:

Bir sayı girmeli (3.000.000'den küçük olsun) ve içindeki basamak sayısını belirlemelisiniz.

Çözüm fikri


Bir sayının basamaklarını saymaya başlayalım. Başlangıçta sayaç 0'dır. Sadece sayıdan son basamağı sırayla kesmemiz gerekir (bu, tamsayıyı 10'a bölerek sayıyı 10 kez azaltarak yapılabilir) ve her seferinde sayacı artırmamız gerekir. 1. 
Sonuç olarak sayaçtaki tüm rakamları kestikten sonra sayının basamak sayısını elde ederiz.
Başka bir şekilde, algoritma şu şekilde formüle edilebilir:
SAYI SIFIR DEĞİLENE KADAR 10 KAT AZALTIN ​​ve SAYACI 1 ARTIRIN.

sayı (n) sayaç Program böyle görünecek.
var n, sayım: tamsayı;
başlamak
    oku(n);
    sayı := 0;
    iken n <> 0 başlamak için
        saymak += 1;
        n := n böl 10;
    son;
    writeln('Sayı - ', n, ' içerir ', say, ' basamak');
son.
Bu programı ezbere bilmeniz gerekiyor, çünkü. temelde, sayıların rakamlarla hesaplanmasıyla ilgili diğer birçok problem çözülmüştür.

Problem

Programı çalıştırın. 

Çalışmasının sonucuna bakın.
Çıktı ifadesinde her şey yolunda mı?
Bu sorunu nasıl çözebileceğinizi düşünün.
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!