December 1, 2020

№5 Masalaning yechilishi va kelgan javoblar

Yechilishi:

Masalani yechishning 2 ta yo’lini qaraymiz. Birinchisi, java.math paketidagi BigInteger sinfidan foydalangan holda, ikkinchisi uzun sonlarni hisoblash algoritmidan foydalangan holda.

1. BigInteger sinfi. Javada java.math paketida BigInteger sinfi bor bo’lib, bu sinfdan qachon primitiv tiplarga qiymatlar sig’maganda foydalanish mumkin. Bu sinf diapazoni aniq chegaralanmagan bo’lib, foydalanilayotgan kompyuter xotirasi bilan teng bo’ladi. Lekin bu sinf o’zgaruvchilari (obyektlar) ustida matematik amallar maxsus metodlar yordamida amalga oshiriladi. Masalan, “+” amali add(), “-” amali subtract(), “*” amali multiply(), “/” amali divide() va hokozo. BigInteger sinfi bilan quyidagi saytlardan to’liq tanishib chiqsangiz bo’ladi:

BigInteger dan foydalanganimizda hechqanday murakkab algoritm shart emas, faqat yuqoridagi 2 sonni qo’shamiz. Ushbu sinfdan foydalanib masalani yechgan o’quvchilar:

Ruslan Duysenbaev

Nurlıbay Kóshkinbeav

Anvar Saparbaev

Ajiniyaz Jarılkapov

O’zimizni kod (Javada):

2. Uzun sonlarni qo’shishning algoritmidan foydalanamiz, ya’niy maktab davridagi 2 sonni qo’shish algoritmi. Bu yerda sonlarni oxiridan qo’shamiz. Agar qo’shilgan raqamlar yig’indisi 9 dan ortib ketsa, ushbu yig’indining butun qismini vaqtincha xotirada saqlaymiz, qoldiq qismini natijaga yozib qo’yamiz. Keyingi raqamlarni qo’shganda, xotiradagi sonni ham qo’shamiz va 9 dan oshib ketsa, yana yuqoridagi amallarni takrorlaymiz. Ushbu jarayon sonning barcha raqamlarini qo’shib bo’lguncha davom etadi. Bu yerda sonlarni satrlarga yozamiz va kerakli raqamni qo’shish vaqtida ularni butun tipga aylantiramiz. Agar sonlarning uzunliklari harxil bo’lsa, kichi sonning oldini 0 lar bilan to’ldiramiz. Lekin natijaga chiqarish vaqtida 0 larni olib tashlaymiz.

Dastur kodi (Javada):

Siz bundanda yaxshiroq, samaraliroq algoritm tuza olsangiz, bizga xabar bering!

Bog’lanish uchun: A.Orınbaev

https://t.me/programmalastiriwJava

https://t.me/TITUNFProgDogerek