» נושאי לימוד
» נושאי לימוד
יום שישי 3 במאי 2024
פעולות בעזרת מחרוזות
דף ראשי  פרק 3 :יסודות שפת פסקל  משתנים ומחרוזות  פעולות בעזרת מחרוזות גרסה להדפסה

פעולות בעזרת מחרוזות

 

דוגמא:

כתוב תוכנית הקולטת שני מספרים ומדפיסה את הגדול מביניהם עם הערה מתאימה במחרוזת.

 

פיתרון:

 

program BIG;

var

     X,Y:real; (*שני המספרים בקלט*)

     ST1,ST2,ST3:string[100];

                 (*מחרוזת שתאחסן את ההערה*)

begin

  {קלט המספרים}

  write('הקש מספר ראשון'); readln(X);

  write('הקש מספר שני'  ); readln(Y);

  {הצבת המחרוזת}

  ST1:='המספר הראשון גדול יותר מהשני';

  ST2:='המספר השני גדול יותר מהראשון';

  ST3:='המספרים שווים';

  {הפלט}

  if X>Y then writeln(ST1);

  if Y>X then writeln(ST2);

  if X=Y then writeln(ST3);

end.

 

 

בסיום ההרצה נקבל את הפלט הבא:

 

7 הקש מספר ראשון

-5  הקש מספר שני

המספר הראשון גדול יותר מהשני

 

 

 

 

 

 

 

לא הודפסו 100 תווים כפי שהוגדר בחלק ה-var בהגדרת המחרוזות, אלא רק המחרוזות הדינאמית, כיוון שחלק מהמחרוזת ריק, לעומת תווי רווח שהיו יוצרים רווח והיינו מקבלים את הדפסת 100 רווחים.הצבת מחרוזת לתוך משתנה המחרוזתי ממלאת רק חלק מהמחרוזת ואילו שאר התווים נישארים ריקים.

 

ברגע  שהוגדר משתנה מחרוזתי מתווסף עוד תא שמספרו  0. בתא זה רשום אורך המחרוזת הדינאמית. אבל יש לזכור כי התא 0 מוגדר כחלק מהמחרוזת ויש לבצע את פונקציות ה-ord על מנת לבצע עליו פעולות חשבון.

 

לדוגמא:

 ord(ST[0])=3 – מאחסן תו באורך 3

 

9

8

7

6

5

4

3

2

1

0

 

 

 

 

 

 

Z

Y

X

 

התא ה- 0 מכיל את אורך המחרוזת הדינאמית

 

 כמובן אם נשנה את ערכו של התא 0 ישתנה האורך הדינאמי של המחרוזת. כלומר,ההתייחסות לאותה מחרוזת תהיה לפי התו הנמצא בתא מספר 0.

 

לדוגמא, נתונה המחרוזת:

9

8

7

6

5

4

3

2

1

0

 

 

 

S

T

W

Z

Y

X


 

                                                      התא 0 מאחסן תו בעל ערך 6

 

נשנה את תוכן התא 0 לערך 3  ונדפיס את המחרוזת.בהדפסה נקבל את התווים XYZ. אם נשנה עוד פעם את התא 0 לערך 5 ונדפיס את המחרוזת,אזי יודפסו התווים XYZWT.

אם הוראה זו תציב מחרוזת זו למחרוזת אחרת אזי תוצב רק המחרוזת הדינאמית. כלומר,יוצבו רק מספר התווים הנכללים באורך הרשום בתא 0.

היינו,מספר התווים המשמעותיים נקבע אך ורק לפי התא 0.

 

דוגמא:

כתוב תוכנית הקולטת למשתנה מחרוזתי באורך 3,שלושה תווים כאשר התו האמצעי הוא אחד מארבעת פעולות החשבון ואילו התו הימני והשמאלי הן ספרות.התוכנית תבצע על שתי הספרות את פעולת החשבון שביניהן.

למשל,אם הקלט למחרוזת היה:

 

3

2

1

7

+

9

 

הפלט יהיה: 16

 

אין צורך לבדוק את תקינות הקלט ונניח כי המשתמש אינו טועה.

 

פתרון:

 

 

program  ARITMETIC_IN_STRING;

var

     ST:string[3]; (*מחרוזת הקלט*)

     X:real; (*התוצאה      *)

begin

     write ('הקש את פעולת החשבון')

     readln (ST);

     if ST[2]='+' then X:=ord(ST[1]) - 48 + (ord (ST[3]) – 48)

     if ST[2]='-' then X:=ord(ST[1]) - 48 - ord (ST[3]) – 48)

     if ST[2]='*' then X:=ord(ST[1]) - 48 * (ord (ST[3]) – 48)

     if ST[2]='/' then X:=ord(ST[1]) - 48 / (ord (ST[3]) – 48)

    writeln (ST,'=',x);

end.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

ST1:='XYZ';

ST2:='ABCD';

 

 

 

 

 

 

 

אזי אם נחבר ST1+ST2 נקבל 'XYZABCD'

ואם נחבר ST2+ST1 נקבל  'ABCDXYZ'

פעולת חיבור בין מחרוזות מצרפת מחרוזות. פעולה זו גם נקראת שרשור מחרוזות.

 

דוגמא:

כתוב תת תוכנית הקולטת תו מסוים וקולטת אותו 16 פעמים.

 

פיתרון:

 

 

 להורדת הקובץ לחץ כאן

 22-03-04 / 12:04  עודכן ,  02-09-03 / 00:25  נוצר ע"י ליזי פרגו'ן  בתאריך 
 מחרוזות - הקודםהבא - פעולות בעזרת מחרוזות-המשך 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 1