עבור לתוכן

עזרה בפסקל

Featured Replies

פורסם

שלום לכולם

אני לומד מחשבים ואני צריך עזרה בלכתוב תכנית שקולטת מחרוזת והופכת כל מילה מהסוף להתחלה בניפרד - ani lomed mashevim יהפוך לina demol mivehsam כאילו שכל מילה מתהפכת והם נשארות באותו סדר... ואנחנו לומדים פונקציות עכשיו אממ מישו בבקשה יכול לעזור לי או לתת לי הנחיות?

עמית

פורסם

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

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

פורסם
  • מחבר

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

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

אמממ תודה רבה אבל די לא הבנתי מה אתה רוצה... אני יודע רק פונקציה לא פרוצדורה...

אם אתה יכולה לכתוב בבקשה יותר בפשטות...

תודה עמית

פורסם

קודם אתה צריך לעשות משתנה STRING חדש כדי לשים בו את המחרוזת ההפוכה

תבדוק כמה אותיות יש בכל מילה (ע"י בדיקת רווחים) ואז כל פעם שאתה מוצא רווח תפעיל את הפונקציה עם הפרמטרים שמצאת והיא תהפוך את האותיות ע"י לולאת FOR

--

אתה יכול להשתמש בעובדה שSTING זה בעצם מערך ואז להשתמש בזה

פורסם

קודם את צריך משתנה עזר ואז אתה פשוט עושה לולאת FOR שתלך מהאות האחרונה לראשונה כאשר כל פעם אתה לוקח את משתנה העזר שלך ומוסיף לו את האות הנוכחית מהמשתנה המקורי שלך.

* אין צורך לבדוק במילה רווחים כיוון שהרווחים הם תווים לכל דבר

פורסם

מצאתי פיתרון יותר קל

--

1. בודק אורך עם LENGTH

2. עושה משתמש STRING חדש

3. עושה לולאת FOR לחצי מהLENGTH

4. מתחיל להפוך...

פורסם
  • מחבר

מצאתי פיתרון יותר קל

--

1. בודק אורך עם LENGTH

2. עושה משתמש STRING חדש

3. עושה לולאת FOR לחצי מהLENGTH

4. מתחיל להפוך...

אבל זה גם הופך לי את סדר המלים ואני צריך שסדר המלים יהיה אותו דבר

פורסם

אז הפתרון הקודם יעבוד...

פורסם

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

פורסם
  • מחבר

אמממ תקשיב אני כבר שלוש שעות על זה ולא מצליח, מישהו בבקשה יכול לעלות דוגמא שהוא כתב או משו....

סליחה שאני מציק לכם...

עמית

פורסם

אני לא יודע פסקל אבל אני יכול לתת לך כיוון.

אתה מקבל מחרוזת מהמשתמש >>> מכניס למערך סטרינגים כל מילה >>> עושה לולאת FOR על המערך ששולחת כל מילה אל פונקציה שבנית שעושה את הדבר הבא. קודם כל מכין משתנה >>> בודק את אורך המילה >>> לוקח לפי אינדקס כל פעם אות אחת מהסוף להתחלה ומשרשר למשתנה עזר בסוף המילה אתה שומר את המשתנה עזר במקום של המילה במערך הסטרינגים ואז בסופו של עניין אתה מריץ לולאת FOR שמדפיסה כל מילה במערך כך הסדר ישמר אך המילים יתהפכו

פורסם
  • מחבר

אני לא יודע פסקל אבל אני יכול לתת לך כיוון.

אתה מקבל מחרוזת מהמשתמש >>> מכניס למערך סטרינגים כל מילה >>> עושה לולאת FOR על המערך ששולחת כל מילה אל פונקציה שבנית שעושה את הדבר הבא. קודם כל מכין משתנה >>> בודק את אורך המילה >>> לוקח לפי אינדקס כל פעם אות אחת מהסוף להתחלה ומשרשר למשתנה עזר בסוף המילה אתה שומר את המשתנה עזר במקום של המילה במערך הסטרינגים ואז בסופו של עניין אתה מריץ לולאת FOR שמדפיסה כל מילה במערך כך הסדר ישמר אך המילים יתהפכו

יואוו ממש תודה לך:) עכשיו אני מבין

פורסם

בכיף ;)

פורסם

אגב אם בכל זאת בא לך לראות דוגמא:*


var s,s2:string;
i,l,m:integer;
function inverse(s:string;b,e:integer):string;
{b - begin point, e- end point}
var j:integer;
s2:string;
begin
s2:='';
for j:=e downto b do
s2:=s2+s[j];
inverse:=s2;
end;
begin
{ TODO -oUser -cConsole Main : Insert code here }
s:='ani lomed mahsavim';
writeln (s);
m:=1;
l:=length(s);
for i:=1 to l do
if s[i]=' '
then begin
s2:=s2+ inverse(s,m,i-1)+ ' ';
m:=i+1;
end;
s2:=s2+ inverse(s,m,i-1);

writeln (s2);
readln;
end.

*הקוד לא ממש מסודר ויש מה לשפר אבל הרעיון ברור

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים