Module: تقسیم و باقیمانده اعداد صحیح


Problem

14 /16


سخت ترین سوال برای مبتدیان یا ارقام یک عدد

Theory Click to read/hide

هنگام کار با ارقام یک عدد، نیاز به اعمال عملیات محاسبه باقیمانده تقسیم قابل مشاهده است. 

بیایید کار زیر را تجزیه و تحلیل کنیم:
یک عدد سه رقمی داده می شود. تمام ارقام این عدد را نمایش دهید و یک عدد جدید با جابجایی واحدها و صدها بدست آورید

سخت ترین سوالی که برای مبتدیان مطرح می شود این است که چگونه ارقام آن را از یک عدد بگیرند و بدست آورند.
در واقع، اگر ریاضی را به خاطر داشته باشید، همه چیز به سادگی حل می شود. و ریاضیات به ما می گوید که هر عددی را می توان به مجموع عبارات رقمی تجزیه کرد.
به عنوان مثال: 365=3*100+6*10+5*1 . می بینیم که هر رقم ضریب رقم مربوط به عدد است. 
با استفاده از مثال تقسیم ستون ها بر عدد 10، نحوه وارد کردن هر رقم یک عدد را به یک متغیر جداگانه نشان خواهیم داد. 1، 10، 100 و غیره)

  

با تجزیه و تحلیل شکل، می بینید که  <پیش> e := n mod 10; // عملیات n mod 10 - آخرین رقم عدد n (یعنی واحدهای عدد) را محاسبه می کند 365 mod 10 = 5 d := n div 10 mod 10; // عملیات n div 10 - عدد را 10 برابر کاهش می دهد، یعنی آخرین رقم عدد را کنار می گذارد (365 div 10 = 36 // اکنون می‌توانیم تعداد ده‌ها را با اعمال عملیات آشنا در نتیجه محاسبه کنیم - باقیمانده را پس از تقسیم بر عدد 10 محاسبه کنید، 36 mod 10 = 6 s := n div 100; // برای بدست آوردن صدها کافی است دو رقم از سمت راست عدد را کنار بگذارید، یعنی دوبار بر 10 تقسیم کنید (n div 10 div10 یا همان n div 100< /strong>) 365 div 100 = 3
با داشتن ارقام ذخیره شده عدد، می توانیم با ضرب رقم مورد نظر در رقم مربوطه از آنها هر عددی بسازیم: 
برای مثال، خط زیر یک عدد جدید از عدد اصلی n دریافت می کند که صدها و یک ها مرتب شده اند:
1) تعداد قدیمی یکها (ذخیره شده در متغیر e)  ضرب در 100 
2) تعداد ده ها قدیمی (ذخیره شده در متغیر d)  در 10 
ضرب کنید 3) به سادگی می توانیم عدد قدیمی صدها را در 1 ضرب کنیم یا به سادگی مقدار ذخیره شده در متغیر s
را بگیریم. سپس فقط مقادیر 1، 2 و 3 را اضافه کنید و یک عدد جدید دریافت کنید:

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

کل برنامه به شکل زیر خواهد بود: <پیش> var n, e, d, s: عدد صحیح; شروع خواندن (n); e := n mod 10; d := n div 10 mod 10; s := n div 100; writeln(e, ' ', d, ' ', s, ' ', e * 100 + d * 10 + s); پایان.

Problem

یک عدد سه رقمی از صفحه کلید وارد می شود. 
برنامه ای بنویسید که فضای جدا شده در یک خط را چاپ کند:
مجموع ارقام عدد و عدد جدید که از جایگشت یک ها و ده ها تشکیل می شود