עזרה תרגיל בשפת C - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

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


Shlompy

Recommended Posts

שלום אנשים.

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

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

זה משהו כזה:

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

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

הפלט יהיה:

ABCD, ABDC, ACDB,CBDA וכו'

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

קישור לתוכן
שתף באתרים אחרים

^

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

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

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

קישור לתוכן
שתף באתרים אחרים

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

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

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

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

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

קישור לתוכן
שתף באתרים אחרים

עריכה:

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

נקח מערך נוסף שבעזרתו נספור בבסיס 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, עכשיו אני רואה את ההודעה שערכת, אני מניח שהתכוונת למשהו מאוד דומה לזה. תודה.

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...