עבור לתוכן

עזרה תרגיל בשפת C

Featured Replies

פורסם

שלום אנשים.

יש לי מבחן בשפת C עוד מעט וכמה תרגילי חזרה למבחן.

יש תרגיל אחד שממש אין לי מושג איך לעשות אותו.

זה משהו כזה:

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

לדוגמא: הקלט היה ABCD

הפלט יהיה:

ABCD, ABDC, ACDB,CBDA וכו'

אודה מאוד על עזרה והכוונה

פורסם

האם AAAA נחשב אפשרות?

אם לא אז מה שאתה צריך זה לייצר פרמוטציות.

תחפש:

generate permutations

פורסם
  • מחבר

^

לא, AAAA לא אופציה. הרעיון הוא רק לשחק עם הסדר של האותיות.

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

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

פורסם

אפשר (אך לא חייבים!) לפתור ברקורסיה בשיטה הבאה:

בהינתן שנכתבו K אותיות, ושיש את הרשימה של K אותיות שנכתבו, וצריך להשלים עוד N-K אותיות:

עבור בלולאה על שאר האותיות שלא נכתבו: 1) הוסף את האות לרשימה 2) קרא רקורסיבית לפונקציה עם הרשימה של K+1 אותיות...

תחשוב בעצמך על תנאי העצירה ומה עושים שמגיעים אליו.

זה לא הפתרון הכי טוב לבעיה, אבל הוא אפשרי.

פורסם
  • מחבר

וואללה איזה בור אני.

לא הבנתי כלום.

גם עוד לא למדנו רקורסיה....

:kopfpatsch:

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

פורסם

עריכה:

אנסח מחדש את הרעיון:

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

פורסם
  • מחבר

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

for (i=0; i<4; i++)
for (i2=0; i2<4; i2++)
for (i3=0; i3<4; i3++)
for (i4=0; i4<4; i4++)
if (i2!=i)
if (i3!=i2 && i3!=i)
if (i4!=i3 && i4!=i2 && i4!=i)
{
putchar(str[i]);
putchar(str[i2]);
putchar(str[i3]);
putchar(str[i4]);
putchar('\n');
}

MIKE, עכשיו אני רואה את ההודעה שערכת, אני מניח שהתכוונת למשהו מאוד דומה לזה. תודה.

פורסם

If you want a recursive solution of this problem you can ask me.

פורסם
  • מחבר

תודה אבל אנחנו מתחילים ללמוד רקורסיה סמסטר הקרוב.

פורסם

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

פורסם
  • מחבר

אחלה תודה רבה

פורסם

בקשר לרקורסיה כל בעייה שניתנת לפתרון בעזרת רקורסיה ניתנת לפתרון בעזרת לולאות.

באופן כללי הפיתרון בעזרת רקורסיה מתאפיין בקוד קצר יותר.

ארכיון

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

דיונים חדשים