الجمعة، 2 أكتوبر 2020

Second largest array element in C ثاني أكبر عنصر صفيف في C.

 Second largest array element in C ثاني أكبر عنصر صفيف في C.



إيجاد ثاني أكبر قيمة في المصفوفة هو برنامج مصفوفة C كلاسيكي. يمنحك هذا البرنامج نظرة ثاقبة عن عوامل التكرار والصفيف والمشروط. نتحقق بشكل متكرر من كل عنصر لتحديد أكبر وثاني أكبر عنصر.

الخوارزمية

دعونا أولاً نرى ما يجب أن يكون الإجراء خطوة بخطوة لهذا البرنامج -

START
   Step 1 → Take an array A and define its values
   Step 2 → Declare largest and second as integer
   Step 3 → Assign first two values of array A to largest and second
   Step 4 → Assign the large value to largest and second largest to second
   Step 5 → Iterate for Array A
   Step 6 → If A[n] > largest, Assign largest.value to second and Assign A[n] to largest
   Step 7 → Else If A[n] > second, Assign A[n] to second
   Step 8 → Loop Terminates
   Step 9 → Display largest and second
STOP

كود مزيف

دعنا الآن نرى الرمز الكاذب لهذه الخوارزمية -

procedure largest_array(A)

   Declare largest and second as integer

   IF A[0] is greater than A[1] THEN 
      largest ← A[0]
      second ← A[1]
   ELSE
      largest ← A[1]
      second ← A[0]
   ENDIF

   FOR EACH value in A DO
      IF A[n] is greater than largest THEN
         second ← largest
         largest ← A[n]
      ELSE IF second is less than A[n] THEN
         second ← A[n]
      END IF

   END FOR
   Display largest and second

end procedure

التنفيذ

يمكن الآن تنفيذ هذا الرمز الزائف في برنامج C على النحو التالي -

#include <stdio.h>

int main() {
   int array[10] = {101, 11, 3, 4, 50, 69, 7, 8, 9, 0};
   int loop, largest, second;

   if(array[0] > array[1]) {
      largest = array[0];
      second  = array[1];
   } else {
      largest = array[1];
      second  = array[0];
   }

   for(loop = 2; loop < 10; loop++) {
      if( largest < array[loop] ) {
         second = largest;
         largest = array[loop];
      } else if( second < array[loop] ) {
         second =  array[loop];
      }
   }

   printf("Largest - %d \nSecond - %d \n", largest, second);   

   return 0;
}

يجب أن يبدو الإخراج كالتالي -

Largest - 101
Second - 69

التسميات: