Menu
Coddy logo textTech

Tekrar: Kelime Frekans Sayacı

Coddy'nin C Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 63 / 63.

challenge icon

Görev

Kolay

Metin girdisini analiz etmek için bir kelime sıklığı sayacı uygulayan bir C programı oluştur. Programın şunları yapması gerekir:

  1. countWordOccurrences adlı bir işlev yaz:
    • İki char* parametresi almalı: sentence ve targetWord
    • Hedef kelimenin cümlede kaç kez geçtiğini belirten bir tam sayı döndürmeli
    • Cümleyi karakter karakter işlemek için bir döngü kullanmalı
    • Ayraç olarak boşlukları kullanarak kelime sınırlarını belirlemeli
    • Cümledeki her kelimeyi çıkarmalı ve strcmp() kullanarak hedef kelimeyle karşılaştırmalı
    • Tam eşleşmeleri saymalı (büyük/küçük harfe duyarlı karşılaştırma)
  2. extractWord adlı bir işlev yaz:
    • Bir char* sentence, bir tam sayı startIndex ve bir char* word parametresi almalı
    • Çıkarılan kelimeden sonraki dizinin indeksini belirten bir tam sayı döndürmeli
    • startIndex konumundan başlayarak boşluk veya null sonlandırıcı bulunana kadar tek bir kelime çıkarmalı
    • Çıkarılan kelimeyi word parametresinde saklamalı
    • Çıkarılan kelimeyi tamamlamak için bir null sonlandırıcı eklemeli
  3. analyzeText adlı bir işlev yaz:
    • Bir char* sentence parametresi almalı
    • Cümledeki toplam kelime sayısını belirten bir tam sayı döndürmeli
    • Ayraç olarak boşlukları belirleyerek kelimeleri saymalı
    • Ardışık birden fazla boşluğu doğru şekilde ele almalı (bunları tek bir ayraç olarak değerlendirmeli)
  4. main işlevinde:
    • 200 boyutunda inputSentence adlı bir karakter dizisi tanımla
    • 50 boyutunda searchWord adlı bir karakter dizisi tanımla
    • Girdiden bir cümle oku (boşluklarla ayrılmış birden fazla kelime içerebilir)
    • Aranacak hedef kelimeyi oku
    • analyzeText işlevini çağır ve toplam kelime sayısını şu tam biçimde yazdır: Total words: [count]
    • countWordOccurrences işlevini çağır ve sonucu şu tam biçimde yazdır: Occurrences of '[searchWord]': [count]
    • Kelime sıklığını, tam olarak 1 ondalık basamakla yüzde olarak hesapla ve şu tam biçimde yazdır: Frequency: [percentage]%
    • Sıklık kategorisini belirle ve yazdır:
      • Sıklık 0.0% ise: Category: Not found yazdır
      • Sıklık 0.0%'dan büyük ancak 20.0%'dan küçükse: Category: Rare yazdır
      • Sıklık 20.0% ile 50.0% arasındaysa (sınırlar dahil): Category: Common yazdır
      • Sıklık 50.0%'dan büyükse: Category: Frequent yazdır

Bu görev, dizi işleme, belirteçlere ayırma ve metin işleme konularındaki yetkinliğini sınar. Cümleleri tek tek kelimelere ayırmayı, dizeleri tam eşleşmeler için karşılaştırmayı ve metin verilerini analiz etmek üzere birlikte çalışan birden fazla işlev uygulamayı öğreneceksin. Program, birçok C uygulaması için gerekli olan gerçek dünya metin işleme tekniklerini gösterir.

Kendin dene

#include <stdio.h>
#include <string.h>

// TODO: extractWord fonksiyonunuzu buraya yazın

// TODO: countWordOccurrences fonksiyonunuzu buraya yazın

// TODO: analyzeText fonksiyonunuzu buraya yazın

int main() {
    char inputSentence[200];
    char searchWord[50];
    
    // Giriş cümlesini oku
    fgets(inputSentence, sizeof(inputSentence), stdin);
    // Eğer varsa yeni satır karakterini kaldır
    inputSentence[strcspn(inputSentence, "\n")] = '\0';
    
    // Aranacak kelimeyi oku
    scanf("%s", searchWord);
    
    // TODO: Kodunuzu aşağıya yazın
    // analyzeText fonksiyonunu çağırın ve toplam kelime sayısını saklayın
    // countWordOccurrences fonksiyonunu çağırın ve eşleşme sayısını saklayın
    // Frekans yüzdesini hesaplayın
    // Frekans kategorisini belirleyin
    
    // Sonuçları istenen formatta yazdırın
    // 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;
}

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online C derleyicisi