Module: عبارت حلقه با شرط - while


Problem

6/21

ارقام اعداد

Theory Click to read/hide

بیایید سعی کنیم برنامه ای برای حل مشکل زیر بنویسیم:

شما باید عددی را وارد کنید (بگذارید کمتر از 3,000,000 باشد) و تعداد ارقام آن را تعیین کنید.

ایده راه حل


بیایید شمارنده ارقام یک عدد را شروع کنیم. در ابتدا، شمارنده 0 است. فقط باید به ترتیب آخرین رقم را از عدد جدا کنیم (این کار را می توان با کاهش عدد 10 برابر، با استفاده از تقسیم اعداد صحیح بر 10 انجام داد)، و هر بار باید شمارنده را افزایش دهیم. 1. 
در نتیجه بعد از اینکه همه ارقام را قطع کردیم، در شمارنده تعداد ارقام موجود در عدد بدست می آید.
به روشی دیگر، الگوریتم را می توان به صورت زیر فرموله کرد:
تا زمانی که عدد صفر نباشد، آن را 10 بار کاهش دهید و شمارنده را 1 افزایش دهید.

<سر> <بدن>
شماره (n) counter
123 0
12 1
1 2
0 3
برنامه به این شکل خواهد بود. <پیش> var n، count: integer; شروع     خواندن (n);     count := 0;     در حالی که n <> 0 برای شروع         شمارش += 1;         n := n div 10;     پایان؛     writeln('Number - ', n, ' حاوی ', count, ' اعداد'); پایان. شما باید این برنامه را از روی قلب بدانید، زیرا. بر اساس آن، بسیاری از مشکلات دیگر مربوط به محاسبه اعداد با ارقام حل می شود.

Problem

برنامه را اجرا کنید. 

به نتیجه کار او نگاه کنید.
آیا همه چیز در عبارت خروجی درست است؟
به این فکر کنید که چگونه می توانید این مشکل را برطرف کنید.