الانتقال إلى المحتوى الرئيسي

كيفية الأس في ج بدون وظيفة الأسرى

  • السيد عبد الإله بنو الدئل
  • المدونة

الأس هو أحد أكثر العمليات شيوعا في البرمجة. عادة ، يتم استخدام وظيفة الأسرى لهذا الغرض ، والذي يتوفر في المكتبة القياسية للغة ج. ومع ذلك ، في بعض الأحيان يصبح من الضروري رفع رقم إلى قوة دون استخدام هذه الوظيفة.

يمكنك تنفيذ الأس يدويا باستخدام حلقة ، وضرب الرقم في حد ذاته عدد معين من المرات. ومع ذلك ، فإن هذه الطريقة غير فعالة وذات فائدة قليلة عند العمل بقيم كبيرة. هناك طريقة أكثر مثالية ، والتي تقوم على خاصية درجة تسمى "العودية".

العودية هي العملية التي تستدعي فيها الوظيفة نفسها.

لرفع الرقم س إلى قوة موجبة ن بدون استخدام وظيفة الأسرى ، يمكنك كتابة الدالة العودية التالية:

إنت السلطة (إنت س ، إنت ن) {

إذا (ن = = 0)

عودة 1;

آخر

عودة س * السلطة (س ، ن-1);

}

  1. نحن رفعه إلى السلطة في ج دون استخدام وظيفة الأسرى
  2. طريقة التحول قليلا
  3. الطريقة العودية
  4. طريقة التكرار
  5. أمثلة التطبيق
  6. سؤال وجواب
  7. كيف يمكنني رفع رقم إلى قوة عدد صحيح موجب في لغة البرمجة ج دون استخدام وظيفة الأسرى?
  8. هل من الممكن رفع رقم إلى قوة سالبة دون استخدام وظيفة أسير الحرب في ج?
  9. كيف يمكنني رفع رقم إلى قوة الصفر دون استخدام وظيفة الأسرى في ج?
  10. هل هناك طريقة أكثر فعالية لأسي رقم دون استخدام وظيفة الأسرى في لغة البرمجة ج?
  11. هل من الممكن استخدام المشغل الرياضي ^ لأسي رقم في لغة البرمجة ج?

نحن رفعه إلى السلطة في ج دون استخدام وظيفة الأسرى

في لغة البرمجة ج ، فإنه يسمح لك لرفع عدد إلى قوة معينة. لكن في بعض الأحيان يصبح من الضروري تنفيذ الأس دون استخدام هذه الوظيفة. في مثل هذه الحالات ، يمكنك استخدام الخوارزمية الموضحة أدناه.

يمكن تنفيذ خوارزمية أس رقم باستخدام حلقة أو عودية. دعونا نفكر في تنفيذ بسيط باستخدام حلقة:

  1. إنشاء متغير لتخزين النتيجة وتعيين قيمة أولية من 1.
  2. هو 1).
  3. نكرر من 1 إلى قيمة الطاقة:
    • اضرب النتيجة في الرقم الأصلي.
  4. إسنيغاتيفيريسولت هو 1 ، ثم نعود القيمة العكسية للنتيجة.
  5. Возвращаем значение результата.

Пример реализации данного алгоритма:

# تشمل 

قوة مزدوجة (قاعدة مزدوجة ، الأس الدولي) {

نتيجة مزدوجة = 1;

إنت إيسنيغاتيفيريسولت = 0;

إذا (الأس < 0) {

قاعدة = 1 / قاعدة;

الأس = - الأس;

إيسنيغاتيفيريسولت = 1;

}

ل (إنت أنا = 1 ؛ أنا < = الأس ؛ أنا i) {

النتيجة * = قاعدة;

}

إذا (إيسنيغاتيفيريسولت) {

النتيجة = 1 / نتيجة;

}

نتيجة الإرجاع;

}

كثافة العمليات الرئيسية () {

قاعدة مزدوجة;

الباحث الأس;

برينتف ("أدخل القاعدة:");

سكانف ("٪لف " ، وقاعدة);

برينتف ("أدخل الأس:");

المسح الضوئي ("٪د " ، والأس);

النتيجة المزدوجة = القوة (الأساس ، الأس);

برينتف ("٪.2و رفعت إلى قوة ٪د هو٪.2 واو

"،الأساس ، الأس ، النتيجة);

العودة 0;

}

لرفع عدد إلى السلطة. يتم عرض النتيجة على الشاشة بدقة منزلتين عشريتين.

في لغة البرمجة ج.

طريقة التحول قليلا

في لغة البرمجة سي ، يمكنك رفع رقم إلى قوة باستخدام طريقة تحويل البت. تعتمد هذه الطريقة على خاصية نظام الأرقام الثنائية ، والذي يسمح لك بزيادة أو تقليل الرقم بسرعة عن طريق ضرب أو إجراء قسمة عدد صحيح في 2.

لرفع الرقم أ إلى قوة ب ، يمكننا استخدام الخوارزمية التالية:

  1. تهيئة متغير النتيجة مع القيمة 1 ، والتي سوف تخزن نتيجة الأس
  2. طالما ب أكبر من 0 ، نقوم بتنفيذ الإجراءات التالية:
    • إذا ب هو رقم فردي ، ثم اضرب الناتج في أ
    • وتقسيم على 2 باستخدام التحول قليلا إلى اليمين
    • نرفع ب إلى قسمة عدد صحيح على 2 ، أيضا باستخدام إزاحة بت إلى اليمين
  3. إرجاع قيمة النتيجة

وهكذا ، في كل تكرار ، نقسم الرقم ب إلى النصف ، وإذا كان فرديا ، فاضرب النتيجة في أ. هذا يسمح لنا برفع رقم بكفاءة إلى أي قوة باستخدام عمليات البت فقط.

Пример реализации этого алгоритма на языке C:

#include 

int power(int a, int b) {

int result = 1;

while (b > 0) {

if (b & 1) {

result *= a;

}

a >>= 1;

b >>= 1;

}

return result;

}

int main() {

int a = 2;

int b = 5;

int result = power(a, b);

printf("%d^%d = %d

", a, b, result);

return 0;

}

В данном примере мы возводим число 2 в степень 5 с использованием метода битового сдвига. Результатом будет число 32.

Рекурсивный метод

الطريقة العودية هي طريقة لحل مشكلة عن طريق تسمية نفسها.

في هذه الحالة ، يمكننا استخدام العودية لأسي رقم.

لتنفيذ هذه الطريقة ، سوف نحتاج إلى وظيفة من شأنها أن تأخذ معلمتين: الرقم أ وقوة ن.

سيتم رفع الرقم الأصلي إلى قوة عن طريق الضرب المتكرر في نفسه.

في نفس الوقت ، لكل استدعاء دالة ، سنخفض الدرجة بمقدار واحد حتى نصل إلى درجة تساوي 0.

هنا مثال على تنفيذ هذه الطريقة في ج:

# تشمل

// دالة تكرارية لرفع الرقم أ إلى قوة ن

قوة كثافة العمليات (كثافة العمليات أ ، كثافة العمليات ن) {

// Базовый случай: if степень равна 0, возвращаем 1

if (n == 0)

return 1;

// Рекурсивный шаг: умножение числа a на результат, полученный при уменьшении степени на 1

return a * power(a, n - 1);

}

int main() {

int a, n;

printf("Введите число: ");

scanf("%d", &a);

printf("Введите степень: ");

scanf("%d", &n);

int result = power(a, n);

printf("%d в степени %d равно %d

", a, n, result);

return 0;

}

عند تنفيذ هذا الرمز ، سيطلب البرنامج رقم ودرجة الارتفاع ، ثم يقوم بإخراج النتيجة.

على سبيل المثال ، إذا أدخلنا الرقم 2 وقوة 3 ، فسيقوم البرنامج بإخراج النتيجة: "2 إلى قوة 3 هي 8".

طريقة التكرار

طريقة التكرار هي واحدة من الطرق لرفع عدد إلى قوة دون استخدام وظيفة الأسرى في اللغة ج. يعتمد على ضرب رقم بشكل متكرر في حد ذاته.

  1. القيمة هي 1 ، لأن أي رقم مرفوع إلى قوة الصفر هو 1.
  2. من 0 إلى قيمة الدرجة.
  3. حسب الرقم الأصلي.
  4. سيحتوي على نتيجة رفع الرقم إلى القوة المحددة.

مثال على الكود الذي ينفذ طريقة التكرار:

"'ج

# تشمل

قوة الطفو (قاعدة الطفو ، الأس الدولي) {

نتيجة تعويم = 1;

الباحث الأول;

إلى عن على (أنا = 0 ؛ أنا < الأس ؛ أنا i) {

النتيجة * = قاعدة;

}

نتيجة الإرجاع;

}

كثافة العمليات الرئيسية () {

قاعدة تعويم = 2.5;

الباحث الأس = 3;

نتيجة التعويم = القوة (الأساس ، الأس);

برينتف ("٪.2و ^ ٪ د=٪.2 واو

"،الأساس ، الأس ، النتيجة);

العودة 0;

}

«`

يأخذ حجتين: قاعدة ودرجة. يستخدم طريقة التكرار لحساب النتيجة ، والتي يتم عرضها بعد ذلك على الشاشة.

أمثلة التطبيق

ارفع الرقم 2 إلى قوة:

  1. ، والتي سوف تخزن النتيجة:

    كثافة العمليات ن = 1;

  2. تعيين الرقم المراد رفعه إلى قوة ، على سبيل المثال ، 2:

    قاعدة كثافة العمليات = 2;

  3. تعيين الأس ، على سبيل المثال ، 5:

    الأس الدولي = 5;

  4. ن * = قاعدة;
  5. طباعة النتيجة:

"،ن);

  1. ارفع الرقم 3 إلى قوة:

    إنشاء متغير

  2. n

    سيؤدي ذلك إلى تخزين النتيجة:

  3. كثافة العمليات ن = 1;

    تعيين الرقم المراد رفعه إلى قوة ، على سبيل المثال ، 3:

  4. ل (إنت أنا = 0 ؛ أنا < الأس ؛ أنا i) {

}

طباعة النتيجة:

برينتف ("3 إلى قوة 4 يساوي ٪ د

"،ن);

إخراج وحدة التحكم:

3 إلى قوة 4 هو 81

سؤال وجواب

كيف يمكنني رفع رقم إلى قوة عدد صحيح موجب في لغة البرمجة ج دون استخدام وظيفة الأسرى?

لرفع رقم إلى قوة عدد صحيح موجب في لغة البرمجة ج ، يمكنك استخدام حلقة والضرب. في هذه الحالة ، من الضروري تعيين القيمة الأولية للنتيجة إلى 1 ، ثم ضربها في الرقم الأصلي في الدورة ن مرات ، أين ن هي قيمة الدرجة. على سبيل المثال ، إذا كنت بحاجة إلى رفع الرقم س إلى قوة ن ، فيمكنك استخدام الخوارزمية التالية:

Ow الأسرىow?

لا ، لا يمكنك رفع رقم إلى قوة سالبة دون استخدام وظيفة الأسرى في لغة البرمجة سي. تم تصميم وظيفة الأسرى للتعامل مع رفع الأرقام إلى أي قوة ، سواء كانت موجبة أو سالبة أو صفرية. إذا كنت ترغب في رفع رقم إلى قوة سالبة في ج ، فستحتاج إلى استخدام وظيفة الأسرى.