180 likes | 302 Views
Lecture #8. Arrays. Agenda. Arrays Review previous part Multi-Dimensional Array Array as Argument Strings I/O Functions Initializing Strings Array of Strings String Functions. Chapter 6 :Arrays and strings. ينظر للسلسلة الحرفية على انها مجموعة متراصة من الأحرف. Arrays.
E N D
Lecture #8 Arrays
Agenda • Arrays • Review previous part • Multi-Dimensional Array • Array as Argument • Strings • I/O Functions • Initializing Strings • Array of Strings • String Functions
Chapter 6 :Arrays and strings • ينظر للسلسلة الحرفية على انها مجموعة متراصة من الأحرف
Arrays • A block of many variables of the same type • Array can be declared for any type • E.g. int A[10] is an array of 10 integers. • Examples: • list of students’ marks • series of numbers entered by user • vectors • matrices
Arrays in Memory • Sequence of variables of specified type • The array variable itself holds the address in memory of beginning of sequence • Example: double S[10]; • The k-th element of array A is specified by A[k-1] (0-based) … 0 1 2 3 4 5 6 7 8 9 … S
Example - reverse #include <stdio.h> int main(void) { inti, A[10]; printf("please enter 10 numbers:\n"); for(i=0; i<10; i++) scanf("%d", &A[i]); printf("numbers in reversed order:\n"); for(i=9; i>=0; i--) printf("%d\n", A[i]); return 0; }
Array Initialization • يمكن تخصيص قيم ابتدائية لعناصر المجموعة المتراصة بطريقتين: • يتم التخصيص خارج دالة ال main() كمثال: • أستخدام static type بداخل الدالة كمثال: int table[5]={50,40,45,55,2}; main() { … } main(){ static inttable[]={50,40,45,55,2}; … }
Array Initialization • في المثال السابق حجم المجموعة محدد بعدد القيم الإبتدائية. • أما اذا كتب الإيعاز علي النحو التالي: • فيتم تحديد قيم ابتدائية لأول اربعة عناصر ويكون العنصر الأخير بقيمة صفر • لا تتم الترجمة أذا كان عدد القيم المعرفة أكبر من حجم المجموعة المتراصة. • Ex_35.c static int table[5]={44,66,54,6};
Multi Dimensional Arrayالمجموعات متعددة الأبعاد • يمكن تعريف المجموعة متعددة الأبعاد كما يلي: • يمكن تخصيص قيم ابتدائية لعناصرها كما يلي: #define ROWS 5 #define COLUMN 10; float matrix[ROWS][COLUMN]; int enemy[5][3] ={{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15}};
Example • #include<stdio.h> • int enemy[5][3]={{1,2,3}, • {4,5,6},{7,8,9}, • {10,11,12},{13,14,15}}; • main() • { • int row=5; • intcol=3; • inti,j; • for (i = 0 ; i <row;i++) • { • for(j = 0 ; j <col;j++) • printf("%d\t",enemy[i][j]); • printf("\n"); • } • } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Ex_36.c
Example #include<stdio.h> main() { char matrix[5][10]; intx,y; for(y = 0 ; y <5;y++) for( x = 0 ; x <10;x++) matrix[y][x] ='.'; printf("Enter Coordenate in form x,y(4,2),"); printf("use negative number to quit"); while((x >= 0)&&(y>=0)) { for( y = 0 ; y < 5 ;y++) { for( x = 0 ; x <10; x++) printf("%c",matrix[y][x]); printf("\n"); } printf("Coordenates:"); scanf("%d %d",&x,&y); matrix[x][y] = '\xdb'; } } Ex_37.c
Arrays As Argumentsالمجموعات المتراصة كمعاملات إزاحة • اسم المجموعة بدون أقواس يمثل عنوان أول عنصر فيها. • Example: list == &list[0] • يستخدم عنوان المجموعة كمعامل إزاحة عند استدعاء الدالة
#include<stdio.h> #define MAXSIZE 20 max(int list2[],int size2); main() { int list[MAXSIZE]; int size = 0; int num; do { printf("type a number :"); scanf("%d",&list[size]); } while(list[size++] !=0); num = max(list,size); printf("largest number is : %d",num); } max(list2,size2) int list2[];int size2; { intdex,max; max = list2[0]; for( dex = 1; dex<size2; dex++) { if (max <list2[dex]) max = list2[dex]; } return max; } Example type a number :2 type a number :44 type a number :5 type a number :66 type a number :7 type a number :43 type a number :0 largest number is : 66 Ex_38.c
Strings • تعرف بأنها مجموعة متراصة من الأحرف وتتنتهي بالتتابع ‘\0’أي حرف ال NULL • يمكن استخدام scanfأو gets أو puts كدوال ادخال وأخراج لسلسلة الأحرف • تستخدم scanfالمسافة لإنهاء عملية الادخال اما gets أو puts فيستخدمان مفتاح ENTER
Initializing Strings • يمكن تخصيص قيم ابتدائية كما يلي Char name[]={‘c’,’a’,’t’,’\0’}; or Char name[]=“cat”;
Dealing With Strings • We can deal with strings either: • As character by character • As string
Example • #include<stdio.h> • main() • { • char name[81]; • intdex; • puts("Enter your name"); • gets(name); • for(dex = 0 ; dex <strlen(name)+4;dex++) • { • printf("addr = %5u char = '%c' = %3d\n“ ,&name[dex], name[dex], name [dex]); • } • }