++C למתחילים
 
דף הבית>>פרק 5

פרק 5

מערכים ומחרוזות :

עד כה הכרנו והשתמשנו במשתנים ובקבועים בדידים. כדי להשתמש בערכו של משתנה היינו חייבים לפנות אליו בשמו המפורש. אך נניח לדוגמא , שבאזור מסויים יש אלפיים מנויי טלפון וברצוננו לבדוק אם מספר טלפון מסויים שייך לאזור זה. לשם כך עלינו לבצע בתוכנית השוואה כנגד אלפיים משתנים שונים. זהו בוודאי לא פיתרון נכון כיוון שהתוכנית שהייתה מתקבלת הייתה גדולה וארוכה ,מה גם שהיתה אורכת זמן ממושך. לשם ייעול התוכנית עלינו להשתמש בטכניקה של מערכים (arrays) המאפשרת לבצע את המשימה בדרך יעילה, פשוטה וקצרה. עושים זאת בעזרת הגדרה של רצף משתנים, הקרויים איברים ובעזרת לולאת תכנות פשוטה ה"מעבירה" אותנו על פניהם בעת ביצוע העיבוד.

הגדרת מערך ואיתחולו:

הגדרת מערך תעשה באופן הבא:  

<מספר איברים>]  <שם מערך>  <טיפוס>]; 
 

או:  

<ערכי אתחול>} = <שם מערך>  <טיפוס>}; 
 

לדוגמה:  

int Array[10]; int Array[] = {110,10,2,5};

 

אתחול של מערך חד-מימדי:

על מנת לאתחל מערך ישנן שתי אפשרויות: ניתן להשתמש בלולאה או בהצבה מרוכזת. לדוגמה אם נרצה לאתחל את המערך my_array[] בערך אפס בעזרת לולאת for:  

void main ()
{
   int my_array[10];
   int i;
   for (i=0; i<10; ++i)
   my_array[i] = 0;
}
 

ובהצבה מרוכזת האיתחול ייראה כך:  

void main()
{
   int my_array[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
}
 

לדוגמה:  

#include <iostream.h> 
#include <conio.h>  

    const int SIZE = 1000; 
    long phone_array[SIZE];
        int current = 0;
        void insert (long num)
        {
          if(current < SIZE) 
           phone_array[current++] = num; 
          else 
            cout << "Can't insert number !! no place left \n"; 
        } 
        int exist (long num) 
        { 
          int i; 
           for (i=0 ; (i <current)&&(phone_array[i]!=num);++i); 
            return (i < current); 
        } 
        void main () 
        { 
          long phone_num = 7749213; 
          insert (6652485); 
          insert (5445698); 
          insert(7745239); 
          insert(7521878); 
        if(exist(phone_num)) 
          cout<< "The phone number "<<phone_num<<"exist \n"; 
        else 
          cout<< "The phone number "<< phone_num<<"Does not exist ! \n"; 
          cout<< "Number of phone is "<<current; 
          getch(); 
        }
 

הסבר התוכנית: בתוכנית זו הגדרנו משתנה קבוע SIZE בגודל 1000. משתנה זה מוגדר לאחר מכן כגודל המערך phone_array . כמו כן ישנן שתי פונקציות insert פונקציה המקבלת משתנה מסוג long , פונקציה זו נועדה בעצם לקבל מספרי טלפון ולבדוק אם המערך מלא - ואז תצא הודעה למשתמש ואם הוא לא מלא אזי המספר יכנס למקום הבא במערך. פונקציה שניה exist גם היא מקבלת משתנה long שזהו בעצם מספר טלפון , ומחזירה ערך אמת במידה והמספר נמצא או ערך שקר במידה ולא נמצא. בפונקצית main ישנן חמש קריאות לפונקציה insert ואז אנו מגיעים ללולאה הבודקת אם הערך הוא אמת אזי תצא הודעה שהמספר נמצא, אם לא והערך של הפונקציה exist הוא שקר אזי נקבל הודעה על כך שהמספר לא נמצא.  

הקודם הבא