עבור לתוכן

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

Featured Replies

פורסם

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

פורסם

שלום רב.

 

ובכן -

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

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

פורסם
  • מחבר
ציטוט של af db creid

שלום רב.

 

ובכן -

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

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

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

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

נערך על-ידי lina12

פורסם

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

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

ככה:

char szInput[100];

לא ?

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

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

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

פורסם
  • מחבר
ציטוט של Jabberwock

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

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

ככה:



char szInput[100];

לא ?

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

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

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

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

נערך על-ידי lina12

פורסם
ציטוט של 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)

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

פורסם

קוד?

פורסם
  • מחבר
ציטוט של af db creid

קוד?

void reverse (char str[]){
 

נערך על-ידי lina12

ארכיון

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

דיונים חדשים