פורסם 2009 בינואר 2116 שנים אם נתונה לי חתימה של פונקציה כך: int Count_Letter (char* Str, char letter) ואני רוצה שהיא תחזיר את מספר הפעמים שהאות מופיעה במחרוזת שקלטנו אליה, וללא הבחנה בין אותיות קטנות לגדולות. איך אני עושה את זה בהתחשב שאני אמור לקבל רק אות קטנה או גדולה בטווח- a-z ואם זה לא אות אלא נניח ספרה אז אני מחזיר הודעה מתאימה ? כמו כן זה לא כ"כ פשוט כי אסור לי להשתמש בפונקציות שקיימות ב- string.h אלא רק באלו שב- stdio.h בלבד... אשמח לעזרה, תודה !
פורסם 2009 בינואר 2116 שנים הכי פשוט, תהפוך את letter לאות קטנה. תעבור על str אות אות, תבדוק אם האות הנוכחית היא בין 'a' ל 'z', אם כן תשווה ל letter ותחליט, אחרת תבדוק אם היא בין 'A' ל 'Z', אם כן, תהפוך אותה לקטנה (במשתנה זמני) ותשווה ל letter ותחליט, אחרת, תדפיס הודעה מתאימה.
פורסם 2009 בינואר 2116 שנים אתה עושה פונקציית while על המערך Str ועובר תו אחד כל פעם עד שאתה מקבל '0\' שזה התו האחרון מחרוזתבכל מעבר אתה משווה בין התו שקיבלת לתו במקום Str כך שאם הם שווים או שיש בינהם הפרש של 31(ההפרש בין אות גדולה לקטנה באסקי, אם אני לא טועה) אתה מדגיל counter
פורסם 2009 בינואר 2116 שנים מחבר int Count_Letter (char* Str, char letter){ char opposite; if(letter >= 'A' && letter <= 'Z') opposite = letter + 32; else if(letter >= 'a' && letter <= 'z') opposite = letter - 32; else return -1; int i=0, count=0; while (Str[i] != '\0') { if(Str[i] == letter || Str[i] == opposite) count++; i++; } return count;} האם זה מתאים ונכון כולל התחום שבו תחמתי את טווח האותיות שלי ? ואגב שוב.... למגיב הראשון: אסור להשתמש בפונקציות הספריה: string.h אלא רק בבסיסי: stdio.h.
פורסם 2009 בינואר 2116 שנים כן, ואיפה ראית שאמרתי להשתמש בפונקציות מ string.h ? אם כבר הייתי עושה איזה define פשוט ל tolower ומסיים עם הסיפור.
פורסם 2009 בינואר 2116 שנים מחבר אם כבר הייתי עושה איזה define פשוט ל tolower ומסיים עם הסיפור. מה הכוונה ? ;D :-\
פורסם 2009 בינואר 2216 שנים אני מציע לך לבדוק את הייצוג הבינארי של האותיות הגדולו והקטנות. תתפלא לראות שXOR פשוט יעזור לך מאוד.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.