שאלה בפסקל

שאלה בפסקל

לפניך דרך להצפנת מחרוזות:כל הרווחים מנופים,ולאחר מכן כל אות במחרוזות מוכנסת אות נוספת,באופן הבא: אם האות שבמחרווזת "קטנה" מ=M תוכנס האות העוקבת לה באלף בית אחרת תוכנס האות הקודמת לה באלף בית כתוב תוכנית שתקלוט מחרוזות ותדפיס את המחרוזת לאחר ההצפנה. בבקשה תעזרו לי. לא הנבתי בכלל את השאלה או מה הפיתרון =|
 

gil levi

New member
אני לא לגמרי בטוח.

מה ש"לא מוגדר" לדעתי, זה הסדר בין האותיות הגדולות לקטנות, אז לשם הפשטות אני אניח שהמחרוזות מכילות רק אותיות גדולות. גם המשפט "ולאחר מכן כל אות במחרוזות מוכנסת אות נוספת", זה בטח אמור להיות: "לאחר מכן, לאחר כל אות במחרוזות...". ניקח דוגמא: נצפין את
GIL LEVI RULES ראשית נמחוק את הרווחים: GILLEVIRULES עכשיו לאחר כל אות שקטנה מאם גדולה , נכניס את האות העוקבת בא"ב האנגלי: GHIJLMLMEFVIJRULMEFS עכשיו, לאחר כל אות שגדולה מאם גדולה, נכניס את האות הקודמת בא"ב האנגלי GHIJLMLMEFVUIJRQUTLMEFSR​
(יכול להיות שיש לי שם כמה טעויות קטנות). אות ש"קטנה" מM היא כזאת שמופיעה לפני M בא"ב האנגלי. אות ש"גדולה" מM היא כזאת שמופיעה אחרי N בא"ב האנגלי. טוב, זה מה שאני הבנתי מהשאלה. אני גם די בטוח שלזה התכוונו. עכשיו כשאני חושב על זה, אולי עדיף שתפני למורה כדאי להיות בטוחה?
 
לדעתי אתה צודק וגם לדעת עוד כמה

ששאלתי חחח הבעיה לאף אחד אין מושג איך לפתור ולכתוב את התוכנית הנדרשת. בבקשה תעזרו!
 

vinney

Well-known member
במה את מתקשה?

ההסבר של גיל היה מאוד ממצה...
 

gil levi

New member
אני כבר לא זוכר פסקל.

אני יכול לעזור לך באלגוריתם, אם בזה את מתקשה.
 
זה גם יעזור...תודה =]

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

gil levi

New member
גם אני לא יודע לכתוב

את זה בהוראות פסקל. אלגוריתם זה לא הוראות פסקל. אלגוריתם כותבים במילים או בפסאודו קוד. בכל אופן, אני אדגים מה האלגוריתם אמור לעשות בעזרת הדוגמא שמקודם. נניח שנתונה לנו המחרוזת:
GIL LEVI RULES​
ונתון לנו האורך שלה: 14. נרוץ בלולאת for על המחרוזת ונספור כמה רווחים יש (לפני ריצה הלולאה נאפס מונה ונעלה את ערכו ב1 בכל פעם שנתקל ברווח). אחרי שעשינו זאת נגלה שיש 3 רווחים. נקצה מקום למחרוזת חדשה T באורך 22 תווים (כי יש 11 אותיות (אות = תו שהוא לא רווח) במחרוזת המקורית ולכל אות צריך להקצות מקום לאות שתבוא אחריה). עכשיו נרוץ בלולאת for על המחרוזת המקורית ועל המחרוזת (שכרגע ריקה) T. אם האות הנוכחית X אינה רווח- נעתיק אותה למחרוזת T. בנוסף, X "קטנה" מM תכתוב אחריה בT את האות העוקבת ל X בא"ב הלטיני. אם X "גדולה או שווה" לM נכתוב אחריה בT את האות הקודמת בא"ב הלטיני. אני אדגים את השלב האחרון (לולאת הfor): בכל "צעד" של הלולאה אני ארשום את המחרוזת המקורית ומתחתיה את המחרוזת החדשה (זאת שתהיה פלט) T:
GIL LEVI RULES ריקה T​
האות הנוכחית היא האות הראשונה G. נעתיק אותה לT ואחרי זה נכתוב בT את האות העוקבת ל G (האות H) כי G קטנה מM.
GIL LEVI RULES GH​
האות הנוכחית היא האות השנייה I. נעתיק אותה למחרוזת T ואחריה נשים את האות העוקבת לI (האות J) בגלל שI קטנה מM.
GIL LEVI RULES GHIJ​
האות הנוכחית היא האות השלישית L. נעתיק את L למחרוזת T ואחריו נשים את האות העוקבת לL (האות M) כי L קטנה מM
GIL LEVI RULES GHIJLM​
בצעד הזה הגענו לרווח אז לא נעשה כלום כעת האות הנוכחית היא האות שאחרי הרווח הראשון- L. נעתיק אותה לT ואחריה נשים את האות העוקבת לL (האות M) כי L קטנה מM.
GIL LEVI RULES GHIJLMLM​
ממשיך באותו אופן:
GIL LEVI RULES GHIJLMLMEF​
כעת האות הנוכחית היא V. נעתיק את V לT ובגלל שV גדולה מM נשים אחרי V את האות הקודמת לV בא"ב הלטיני- האות U.
GIL LEVI RULES GHIJLMLMEFVU​
וככה ממשיכים עד לצעד ה14 (שזה מספר האותיות במחרוזת המקורית). טוב, אני מקווה שהרעיון ברור מההסבר שלי. אם משהו לא ברור או שאת מתקשה בכתיבת האלגוריתם באופן כללי, אני אשמח לעזור.
 

yonyl

New member
יש פקודת למחיקה תו

לא צריך להקצות מקום חדש כדי למחוק רווח אפשר לסרוק וכשנתקלים ברווח פשוט למחוק אותו יש סיפריה שמטפלת במחרוזות ויש לה פקודה כזאת. לא זוכר פסקל אבל אני זוכר שיש שם טיפוס string ויש מלא פונקציות טובות שעובדות איתו.אני אפילו זוכר שזה יותר נח מ C\C++
 

gil levi

New member
זה לא נימוק.

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

הבגרות של יחידה 2-3 מדעי המחשב סמל שאלון 899222 תשס"ה, 2005 - מיוחד? כי יש שמה כמה תרגילים טובים אבל אני לא מוצאת פתרונות.
 
למעלה