עזרה בפונקציה רקורסיבית עם מחרוזת (C) - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון
  • מי אנחנו?

    שלום אורח/ת!

     
    שים לב - על מנת להשתתף בקהילה שלנו, להגיב ולפתוח דיונים חדשים, עליך להצטרף כחבר רשום.

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

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

עזרה בפונקציה רקורסיבית עם מחרוזת (C)


lina12

Recommended Posts

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

קישור ישיר להודעה
שתף באתרים אחרים
ציטוט של af db creid

שלום רב.

 

ובכן -

א. האם הפונקציה הרקורסיבית עצמה צריכה לקלוט את הטקסט או בנפרד ממנה?

ב. מה ניסית עד כה? במה את צריכה עזרה?

צריך לקלוט טקסט מהmain ואז להפעיל את הפונקציה.

בגדול הצלחתי לעשות את זה בלי מערך. הבעיה היא שיש הגבלה ל100 תווים ככה שאני די בטוחה שהדרך היחידה היא במערך.

נערך על-ידי lina12
קישור ישיר להודעה
שתף באתרים אחרים

לא הצלחתי להבין את התרגיל.

יש לך מערך של char בעל 100 תווים ?

ככה:

char szInput[100];

לא ?

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

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

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

קישור ישיר להודעה
שתף באתרים אחרים
ציטוט של Jabberwock

לא הצלחתי להבין את התרגיל.

יש לך מערך של char בעל 100 תווים ?

ככה:



char szInput[100];

לא ?

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

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

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

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

נערך על-ידי lina12
קישור ישיר להודעה
שתף באתרים אחרים
ציטוט של Jabberwock

תו יכול להיות או מספר או אות או תו מיוחד למשל דולר, כוכבית וכו'.

לא הבנתי את המשפט שלך

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

קישור ישיר להודעה
שתף באתרים אחרים
ציטוט של lina12

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

הבנתי. אוקיי אז בשביל לדעת איך עושים את התנאי הזה צריך להכיר את טבלת ASCII.

https://he.wikipedia.org/wiki/ASCII

http://www.asciitable.com/

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

int main()
{
    char val;
    cin >> val;
    
    if (val >= 'A' && val <= 'Z' || val >= 'a' && val <= 'z')
        cout << "yes we got a letter and not a number";
    else cout << "we didn't get a letter!";
}

 

קישור ישיר להודעה
שתף באתרים אחרים
ציטוט של Jabberwock

הבנתי. אוקיי אז בשביל לדעת איך עושים את התנאי הזה צריך להכיר את טבלת ASCII.

https://he.wikipedia.org/wiki/ASCII

http://www.asciitable.com/

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


int main()
{
    char val;
    cin >> val;
    
    if (val >= 'A' && val <= 'Z' || val >= 'a' && val <= 'z')
        cout << "yes we got a letter and not a number";
    else cout << "we didn't get a letter!";
}

 

שתלמד איך להשתמש בספרייה הסטנדרטית! מיומנות חשובה!

#include <ctype.h> // or <cctype> for C++
  
isalpha(ch)

 

קישור ישיר להודעה
שתף באתרים אחרים
ציטוט של af db creid

טוב.

קודם כל - מה ניסית. הכי קל לתת לך תוכנית מוכנה, אבל יותר יועיל לך אם נכוון אותך. מה הכיוונים שלך? על מה חשבת?

מה פירוש "בלי מצביעים"? אלא איך? עם מערכים?

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

נערך על-ידי lina12
קישור ישיר להודעה
שתף באתרים אחרים
ציטוט של af db creid

מה הקוד שניסית?

קיבלתי מערך לפונקציה. חישבתי את הפונקציה באיבר ה-0 וכל פעם קידמתי את המערך ב-1 (כלומר array+1)

ואת הפקודת הדפסה שמתי בסוף.

קישור ישיר להודעה
שתף באתרים אחרים

הצטרפ/י לדיון

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

אורח
הוסף תגובה

×   התוכן שהודבק הוא עם עיצוב.   הסר עיצוב

  Only 75 emoji are allowed.

×   הקישור שלך הוטמע אוטומטית.   הצג כקישור רגיל

×   התוכן הקודם שלך שוחזר אוטומטית.   נקה הכל

×   You cannot paste images directly. Upload or insert images from URL.

×
  • צור חדש...

בראש החדשות:

חדש באתר