زرد رو درست فهمیدی.
درباره سبز:
ببین، ما یه قرار دادی داشتیم که یکان خونه آخر باشه و دهگان خونه یکی مونده به آخر و... و بالاترین ارزش مکانی در خونه اول.
خوب اینو داشته باش تا بعد ...(تا آخر پست میفهمی)
از طرفی a و b هردو 100 رقمی اند، همونطور که ممکنه بدونی(میدونی) جمع دو عدد n رقمی میتونه n رقمی شه میتونه n+1 رقمی شه.(در اینکه یکان ها از 9 بزرگتر شن 10 تا ازشون کم شه و یه دونه به بعدی اضافه شه نه بیشتر از این قانون استفاده کردیم)
پس با توجه با این نکته k یا 100 رقمیه یا 101 رقمی. برای احتیاط(درسّش همینه، اگه 100 رقمی بگیریم 101 رقمی شه چی؟) k رو میگیرم 101 خونه. و جمع رو شروع میکنیم ... . یکان میافته تو خونه 101(برای احتیاط دیگه و... ، پرانتز بالا!) و همینطور دهگان و ...(به خاطر همین اندیس k همیشه i+1 و اندیس دو آرایه دیگه i که یه دونه کمتره است)
حالا آخرش چک میکنیم اگه خونه 2 دورقمی بود یعنی یه دونه رقم باید به خونه 1 اضافه شه(انتقال میدیم و از این 10 تا کم میکنیم). که در if اینو گفتیم.
حالا آخر if داشتیم else، یعنی اگه خونه 2 دورقمی نبود، که در این صورت عدد ما 100 رقمیه(چون چیزی به خونه 1 اضافه نمیشه) یعنی ما عدد 100 رقمی داریم که بالاترین ارزش آن در خونه 2 است! پس خونه یک چی؟ مگه نباید تو اون باشه؟ به همین خاطر همه رو یه دونه میندازیم اینور(خونه های آرایه بقلی بگیر بازی میکنن! همه ارقام رو یه دونه میدن اونور) یا در اصطلاح شیفت میدیم. حالا با این کار ما خونه 1 بالاترین ارزش رو داره و خونه 101 بی مصرفه و حالا مقدار توش فرقی نداره، برای احتیاط در این حات میتونیم مقدار 101 رو منفی بزاریم تا وقتی چکش میکنیم اگه منفی بود یعنی الکیه و عدد ما 100 رقمیه.
حالا فهمیدی؟(دوستان اگه شما هم نمیفهمید بگید، شاید من بد توضیح میدم، درحالیکه شاید به اشتباه فکر کنم سطح مطالب بالائه)
راستی، کامپایلری که گفتم freepascal رو گفتم! استاندارده دیگه! تو لینوکس هم فقط اونه، از موقعی که دیگه دوره پاسکال تموم شد(برای کار حرفه ای، نه آموزش اولیه برنامه نویسی) تنها کامپایلری درست حسابی ایه که داره آپدیت میشه(اگه تو این دو سه سال متوقف نشده باشه) اینجا جاش نیست ولی اینم میگم به همین دلیله که خیلی کارای خفن و دلفی ای رو میشه توش انجام داد(مثلا بازی سه بعدی خیلی خفن با openGL نوشت، جدی میگم خودم نوشتم)