البرمجة بلغة C/ف4:المصفوفات

المفهوم

عدل
  • من خواص المصفوفة في لغة C++ كونها ثابتة الحجم وعناصرها من النوع ذاته.
  • العناصر هي مؤشرات تبدأ دوماً من 0.
  • ترتب العناصر في أبعاد (أحادية البعد، ثنائية البعد، ...)
  • لكل مصفوفة اسم، مع فهرس، ويستخدم للإشارة لجميع عناصره.

مصفوفة وحيدة البعد

عدل

التصريح عن المصفوفات وحيدة البعد

عدل
const int length = n;
type tab [length];
مثال
const int length = 20;
int tab [length];
tab [2] = 7;
printf("tab [2] = %d ", tab [2]);
const int length1 = 5, length2 = 6;
 int tab1[length1]= {1,2,3,4,5};
char tab2[length2]= "Hello";

إدخال المصفوفات وحيدة البعد وطباعتها

عدل
#include <stdio.h>

int main (){
	
const int length1= 5;
int tab[length1];
for (int i =0; i < length1; i++){
       printf ("Enter the element %d:", i);
       scanf ("%d", &tab[i]);
	                                }
for (int i =0; i < length1; i++){
   printf ("tab [%d] = %d \n", i,tab[i]);}
return 0;
                     }
  • لفحص جميع العناصر
for (int i =0; i < length1; i++)
	{operation on tab[i]}
  • إدخال كل عنصر يدوياً
for (int i =0; i < length; i++){
	printf ("Entrez element %d:", i);
	scanf ("%d", &tab[i]);
	                            }
  • طباعة العناصر كافَّةً
for (int i =0; i < length; i++)
	{printf ("tab [%d] = %d\n", i, tab [i]);}

البحث الخطي

عدل
  • ابحث عن القيمة N في المصفوفة.
  • يمكن أن توجد القيمة عدة مرات.
  • نحن نهتم بالفهرس (حيث يوجد العنصر)
#include <stdio.h>
int main (){
    const int length1= 10;
    int valeur;
    int tab[length1]= {1,2,3,4,5,1,2,3,4,5};
    printf ("Enter value1: ");
    scanf ("%d", &value1);
    for (int i =0; i < length1; i++){
          if (tab[i] == value1) {
                printf("find the element: "
                         "%d\n",i);                     
        }	
            }     
   return 0;
                    }

مصفوفة ثنائية البعد

عدل

التصريح عن المصفوفات ثنائية البعد

عدل
  • التصريح:
const int length1 = n1, length2 = n2;
type tab [n1][n2];
مثال
const int length = 3, length2 =3
int tab [length1][length2];
tab [2][2] = 7;
printf("tab [2][2] = %d ", tab [2][2]);
const int length1 = 3, length2 = 3;
 int tab[length1][length2]= {1,2,3,4,5,6,7,8,9};

إدخال المصفوفات ثنائية البعد وطباعتها

عدل
#include <stdio.h>
int main (){
	
const int length1 = 3, length2 =3;
int tab[length1] [length2];
for (int i =0; i < length1; i++){
      for (int j =0; j < length2; j++){
	printf ("Entrez element (%d, %d): ", i,j);
	scanf ("%d", &tab[i][j]);
	                            }}
for (int i =0; i < length1; i++){
          for (int j =0; j < length2; j++)
	{printf ("%d\t", tab [i][j]);}
          printf ("\n");} 
return 0;
                     }
  • اقرأ العناصر كافَّة
for (int i =0; i < length; i++){
         for (int j =0; j < length; j++)
	{operation on tab[i][j]}}
  • أدخل جميع العناصر يدويًا
for (int i =0; i < length1; i++){
      for (int j =0; j < length2; j++){
	printf ("Entrez element (%d, %d):", i,j);
	scanf ("%d", &tab[i][j]);
	                            }}
  • اطبع جميع العناصر
for (int i =0; i < length1; i++){
          for (int j =0; j < length2; j++)
	{printf ("%d\t", tab [i][j]);}
          printf ("\n");}

حالات خاصة

عدل
صف محدد

i : tout, j= ثابت

j=1;
for (int i =0; i < length1; i++)
      {operation on tab[i][j]}
عمود محدد

i : ثابت, j= tout

i=1;
for (int j =0; j < length2; j++)
      {operation on tab[i][j]}
قطر محدد

i = j

for (int i =0; i < length1; i++){
          for (int j =0; j < length2; j++){
	if (i == j)
	      {printf ("%d\t", tab [i][j]);}
                                                   }}