Menu
Coddy logo textTech

סיכום: מונה תדירות מילים

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C של Coddy. שיעור 63 מתוך 63.

challenge icon

אתגר

קל

צרו תוכנית C שמממשת מונה תדירות מילים לניתוח קלט טקסט. התוכנית שלכם צריכה:

  1. לכתוב פונקציה בשם countWordOccurrences ש:
    • מקבלת שני פרמטרים מסוג char*: sentence ו-targetWord
    • מחזירה מספר שלם המייצג את מספר הפעמים שמילת היעד מופיעה במשפט
    • משתמשת בלולאה כדי לעבד את המשפט תו אחר תו
    • מזהה גבולות בין מילים באמצעות רווחים כמפרידים
    • מחלצת כל מילה מהמשפט ומשווה אותה למילת היעד באמצעות strcmp()
    • סופרת התאמות מדויקות (השוואה שתלויה ברישיות אותיות)
  2. לכתוב פונקציה בשם extractWord ש:
    • מקבלת משפט מסוג char*, מספר שלם startIndex ופרמטר מילה מסוג char*
    • מחזירה מספר שלם המייצג את האינדקס שאחרי המילה שחולצה
    • מחלצת מילה אחת החל מ-startIndex ועד שנמצא רווח או תו סיום מחרוזת ריק
    • שומרת את המילה שחולצה בפרמטר word
    • מוסיפה תו סיום מחרוזת ריק להשלמת המילה שחולצה
  3. לכתוב פונקציה בשם analyzeText ש:
    • מקבלת פרמטר משפט מסוג char*
    • מחזירה מספר שלם המייצג את מספר המילים הכולל במשפט
    • סופרת מילים באמצעות זיהוי רווחים כמפרידים
    • מטפלת נכון ברווחים רצופים מרובים (ומתייחסת אליהם כמפריד יחיד)
  4. בפונקציה הראשית:
    • להכריז על מערך תווים בשם 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

האתגר הזה בוחן את השליטה שלכם בעיבוד מחרוזות, בפירוק לטוקנים ובעיבוד טקסט. תתרגלו פירוק של משפטים למילים בודדות, השוואת מחרוזות למציאת התאמות מדויקות ומימוש של כמה פונקציות הפועלות יחד כדי לנתח נתוני טקסט. התוכנית מדגימה טכניקות מעשיות לעיבוד טקסט, החיוניות ליישומי 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;
}

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

תרגלו בעצמכם: קומפיילר C אונליין