סיכום: מונה תדירות מילים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C של Coddy. שיעור 63 מתוך 63.
אתגר
קלצרו תוכנית C שמממשת מונה תדירות מילים לניתוח קלט טקסט. התוכנית שלכם צריכה:
- לכתוב פונקציה בשם
countWordOccurrencesש:- מקבלת שני פרמטרים מסוג
char*:sentenceו-targetWord - מחזירה מספר שלם המייצג את מספר הפעמים שמילת היעד מופיעה במשפט
- משתמשת בלולאה כדי לעבד את המשפט תו אחר תו
- מזהה גבולות בין מילים באמצעות רווחים כמפרידים
- מחלצת כל מילה מהמשפט ומשווה אותה למילת היעד באמצעות
strcmp() - סופרת התאמות מדויקות (השוואה שתלויה ברישיות אותיות)
- מקבלת שני פרמטרים מסוג
- לכתוב פונקציה בשם
extractWordש:- מקבלת משפט מסוג
char*, מספר שלםstartIndexופרמטר מילה מסוגchar* - מחזירה מספר שלם המייצג את האינדקס שאחרי המילה שחולצה
- מחלצת מילה אחת החל מ-
startIndexועד שנמצא רווח או תו סיום מחרוזת ריק - שומרת את המילה שחולצה בפרמטר
word - מוסיפה תו סיום מחרוזת ריק להשלמת המילה שחולצה
- מקבלת משפט מסוג
- לכתוב פונקציה בשם
analyzeTextש:- מקבלת פרמטר משפט מסוג
char* - מחזירה מספר שלם המייצג את מספר המילים הכולל במשפט
- סופרת מילים באמצעות זיהוי רווחים כמפרידים
- מטפלת נכון ברווחים רצופים מרובים (ומתייחסת אליהם כמפריד יחיד)
- מקבלת פרמטר משפט מסוג
- בפונקציה הראשית:
- להכריז על מערך תווים בשם
inputSentenceבגודל 200 - להכריז על מערך תווים בשם
searchWordבגודל 50 - לקרוא משפט מהקלט (שעשוי להכיל כמה מילים המופרדות ברווחים)
- לקרוא מילת יעד לחיפוש
- לקרוא לפונקציה
analyzeTextולהדפיס את מספר המילים הכולל בפורמט המדויק הזה:Total words: [count] - לקרוא לפונקציה
countWordOccurrencesולהדפיס את התוצאה בפורמט המדויק הזה:Occurrences of '[searchWord]': [count] - לחשב ולהדפיס את תדירות המילה באחוזים, עם ספרה אחת בדיוק אחרי הנקודה העשרונית, בפורמט המדויק הזה:
Frequency: [percentage]% - לקבוע ולהדפיס את קטגוריית התדירות:
- אם התדירות היא 0.0%: להדפיס
Category: Not found - אם התדירות גדולה מ-0.0% אך קטנה מ-20.0%: להדפיס
Category: Rare - אם התדירות היא בין 20.0% ל-50.0% (כולל): להדפיס
Category: Common - אם התדירות גדולה מ-50.0%: להדפיס
Category: Frequent
- אם התדירות היא 0.0%: להדפיס
- להכריז על מערך תווים בשם
האתגר הזה בוחן את השליטה שלכם בעיבוד מחרוזות, בפירוק לטוקנים ובעיבוד טקסט. תתרגלו פירוק של משפטים למילים בודדות, השוואת מחרוזות למציאת התאמות מדויקות ומימוש של כמה פונקציות הפועלות יחד כדי לנתח נתוני טקסט. התוכנית מדגימה טכניקות מעשיות לעיבוד טקסט, החיוניות ליישומי C רבים.
נסו בעצמכם
#include <stdio.h>
#include <string.h>
// TODO: כתבו כאן את הפונקציה extractWord
// TODO: כתבו כאן את הפונקציה countWordOccurrences
// TODO: כתבו כאן את הפונקציה analyzeText
int main() {
char inputSentence[200];
char searchWord[50];
// קראו את משפט הקלט
fgets(inputSentence, sizeof(inputSentence), stdin);
// הסירו את תו השורה החדשה אם הוא קיים
inputSentence[strcspn(inputSentence, "\n")] = '\0';
// קראו את מילת החיפוש
scanf("%s", searchWord);
// TODO: כתבו את הקוד שלכם למטה
// קראו לפונקציה analyzeText ושמרו את מספר המילים הכולל
// קראו לפונקציה countWordOccurrences ושמרו את מספר ההופעות
// חשבו את אחוז השכיחות
// קבעו את קטגוריית השכיחות
// הציגו את התוצאות בפורמט הנדרש
// printf("Total words: %d\n", totalWords);
// printf("Occurrences of '%s': %d\n", searchWord, occurrences);
// printf("Frequency: %.1f%%\n", frequency);
// printf("Category: %s\n", category);
return 0;
}כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1יסודות המצביעים
מהו מצביע?הכרזה על מצביעיםאופרטור לקיחת הכתובת (&)אופרטור ביטול ההפניה (*)מצביעי NULLסיכום: יסודות המצביעים2מצביעים ומערכים
שמות מערכים כמצביעיםאיברי מערך ומצביעיםאריתמטיקה של מצביעיםהשוואת מצביעיםסיכום: מעבר על מערך באמצעות מצביעים5מצביעים ופונקציות
העברה לפי ערךהעברת מצביעים לפונקציותשינוי משתנים באמצעות מצביעיםדוגמה קלאסית: החלפההעברת מערכים לפונקציותחזרה: ארגומנטים של מצביעי פונקציה3מערכי תווים ומחרוזות
מחרוזות כמערכי charתו הסיום nullקלט מחרוזת באמצעות scanfשימוש ב־strlen()שימוש ב־strcpy()שימוש ב־strcat()שימוש ב־strcmp()סיכום: פונקציות מחרוזת בסיסיותתרגלו בעצמכם: קומפיילר C אונליין