الخوارزميات و هياكل البيانات التحدي السادس - حل التمرين الأول بلغة C

المطلوب

قم بتعريف دالة إسمها PrintSecondBiggest, عند استدعاءها نمرر لها مصفوفة أحادية (ذات بعد واحد) فتقوم بطباعة ثاني أكبر عدد موجود فيها.
بعدها قم بإنشاء مصفوفة في البرنامج و تجربة استدعاء الدالة لمعرفة ثاني أكبر عدد موجود في المصفوفة.


الحل بلغة C

#include <stdio.h>

// printSecondBiggest() هنا قمنا بتعريف الدالة
void printSecondBiggest(int *arr, int arrLength) {
    
    if (arrLength == 0)
    {
        printf("Invalid params");
        return;
    }
    
    int secondBiggest = arr[0];
    int temp;
    
    for (int i = 0; i < arrLength - 1; i++)
    {
        for (int j = i + 1; j < arrLength; j++)
        {
            if (arr[i] > arr[j])
            {
                temp = arr[j];
                arr[j] = arr[i];
                arr[i] = temp;
            }
        }
    }
    
    for (int i = arrLength - 1; i >= 0; i--)
    {
        if (arr[i] != arr[arrLength - 1])
        {
            secondBiggest = arr[i];
            break;
        }
    }
	
	if (secondBiggest == arr[0])
	{
		printf("There isn't a second biggest number");
		return;
	}
    
    printf("Second biggest number is: %d", secondBiggest);
	
}


// printSecondBiggest() هنا قمنا بإنشاء مصفوفة أرقام أحادية و تجربة الدالة
void main() {
    
    int arr[] = {5, 9, 3, 6, 4, 2, 7, 1, 8};
    int arrLength = sizeof(arr) / sizeof(arr[0]);
        
    printSecondBiggest(arr, arrLength);
    
}
		

سنحصل على النتيجة التالية عند التشغيل في حال كانت المصفوفة تحتوي على نفس القيم المجهزة فيها.

Second biggest number is: 8
		

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة