Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

تحديات برمجيةالتحدي التاسع - حل التمرين الثالث بلغة C

المطلوب

قم بتعريف دالة إسمها SquareRoot()، عند استدعاءها نمرر لها عدد, فترجع ناتج قيمة الجزر التربيعي ( Square Root ) له.
بعدها قم بتجربة هذه الدالة في البرنامج.

الحل بلغة C

#include <stdio.h>

// SquareRoot هنا قمنا بتعريف الدالة
double SquareRoot(double number) {
    // إذا كان العدد أصغر من صفر فإنها ترجع رسالة خطأ و العدد 1- كدليل على أن الناتج خطأ
    if (number < 0) {
        fprintf(stderr, "Cannot calculate square root of a negative number\n");
        return -1;
    }

    // إذا كان العدد بين 0 و 1 فإنه سيتم إرجاعه كم هو 
    if (number == 0 || number == 1) {
        return number;
    }

    // التخمين الأول للناتج
    double guess = number / 2.0;

    // هنا قمنا باستخدم طريقة نيوتن-رافسون للتقريب التكراري
    for (int i = 0; i < 100; i++) {
        guess = 0.5 * (guess + number / guess);
    }
    
    // هنا قمنا بإرجاع الناتج
    return guess;
}

// هنا قمنا بتجربة الدالة
int main() {
    double inputNumber = 25.0;
    double result = SquareRoot(inputNumber);
    
    // إذا لم يكن الناتج 1- فإنها ستطبع كم هو الجواب
    if (result != -1) {
        printf("Square root of %lf is: %lf\n", inputNumber, result);
    }

    return 0;
}

سنحصل على النتيجة التالية عند التشغيل.

Square root of 25.0 is 5.0