البرمجة بلغة 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]);}
}}