Tekrar: Kelime Frekans Sayacı
Coddy'nin C Journey'sinin Logic & Flow bölümünün bir parçası — ders 63 / 63.
Görev
KolayMetin girişini analiz etmek için bir kelime frekans sayacı uygulayan bir C programı oluşturun. Programınız şunları yapmalıdır:
- Aşağıdaki özelliklere sahip
countWordOccurrencesadında bir fonksiyon yazın:- İki adet
char*parametresi alır:sentencevetargetWord - Hedef kelimenin cümlede kaç kez geçtiğini temsil eden bir tam sayı döndürür
- Cümleyi karakter karakter işlemek için bir döngü kullanır
- Boşlukları sınırlayıcı olarak kullanarak kelime sınırlarını belirler
- Cümledeki her bir kelimeyi çıkarır ve
strcmp()kullanarak hedef kelimeyle karşılaştırır - Tam eşleşmeleri sayar (büyük/küçük harf duyarlı karşılaştırma)
- İki adet
- Aşağıdaki özelliklere sahip
extractWordadında bir fonksiyon yazın:- Bir
char*sentence, bir tam sayıstartIndexve birchar*word parametresi alır - Çıkarılan kelimeden sonraki indeksi temsil eden bir tam sayı döndürür
startIndex'ten başlayarak bir boşluk veya null sonlandırıcı bulunana kadar tek bir kelime çıkarır- Çıkarılan kelimeyi
wordparametresinde saklar - Çıkarılan kelimeyi tamamlamak için bir null sonlandırıcı ekler
- Bir
- Aşağıdaki özelliklere sahip
analyzeTextadında bir fonksiyon yazın:- Bir
char*sentence parametresi alır - Cümledeki toplam kelime sayısını temsil eden bir tam sayı döndürür
- Boşlukları ayırıcı olarak tanımlayarak kelimeleri sayar
- Birden fazla ardışık boşluğu doğru şekilde işler (onları tek bir ayırıcı olarak kabul eder)
- Bir
- Ana fonksiyonda (main function):
- 200 boyutunda bir
inputSentencekarakter dizisi tanımlayın - 50 boyutunda bir
searchWordkarakter dizisi tanımlayın - Girişten bir cümle okuyun (boşluklarla ayrılmış birden fazla kelime içerebilir)
- Aranacak bir hedef kelime okuyun
analyzeTextfonksiyonunu çağırın ve toplam kelime sayısını tam olarak şu formatta yazdırın:Total words: [count]countWordOccurrencesfonksiyonunu çağırın ve sonucu tam olarak şu formatta yazdırın:Occurrences of '[searchWord]': [count]- Kelime frekansını yüzde olarak, tam olarak 1 ondalık basamakla şu formatta hesaplayın ve yazdırın:
Frequency: [percentage]% - Frekans kategorisini belirleyin ve yazdırın:
- Eğer frekans 0.0% ise:
Category: Not foundyazdırın - Eğer frekans 0.0%'dan büyük ancak 20.0%'dan küçükse:
Category: Rareyazdırın - Eğer frekans 20.0% ile 50.0% arasındaysa (dahil):
Category: Commonyazdırın - Eğer frekans 50.0%'dan büyükse:
Category: Frequentyazdırın
- Eğer frekans 0.0% ise:
- 200 boyutunda bir
Bu meydan okuma, dize manipülasyonu, tokenizasyon ve metin işleme konusundaki ustalığınızı test eder. Cümleleri tek tek kelimelere ayırma, dizeleri tam eşleşmeler için karşılaştırma ve metin verilerini analiz etmek için birlikte çalışan birden fazla fonksiyon uygulama pratiği yapacaksınız. Program, birçok C uygulaması için gerekli olan gerçek dünya metin işleme tekniklerini göstermektedir.
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;
}Logic & Flow bölümündeki tüm dersler
1Pointer Temelleri
Pointer Nedir?Pointer TanımlamaAdres Operatörü (&)Dereference Operatörü (*)NULL Pointer'larÖzet: Pointer Temelleri4Proje: Basit Metin Aracı
Projeye Genel BakışKarakter Sayma2İşaretçiler ve Diziler
İşaretçi Olarak Dizi İsimleriDizi Elemanları - İşaretçilerİşaretçi Aritmetiğiİşaretçilerin KarşılaştırılmasıÖzet: İşaretçi ile Dizi Gezinme5İşaretçiler ve Fonksiyonlar
Değer ile GeçmeFonksiyonlara İşaretçi Göndermeİşaretçiler ile Değişkenleri DeğiştirmeKlasik Bir Örnek: SwapFonksiyonlara Dizi GöndermeÖzet: Fonksiyon İşaretçi Argümanları8Yapılar ve İşaretçiler
Yapılara İşaretçilerOk Operatörü (->)Yapıları Değer ile AktarmaYapı İşaretçilerini AktarmaYapıların Dinamik TahsisiÖzet: Yapıyı Değiştirme - Ptr11Son Tekrar Görevleri
Tekrar: Dinamik String BirleştirmeTekrar: Struct DizisiTekrar: Kelime Frekans Sayacı3Karakter Dizileri ve Stringler
char Dizisi Olarak StringlerNull Sonlandırıcıscanf ile String Girişistrlen() Kullanımıstrcpy() Kullanımıstrcat() Kullanımıstrcmp() KullanımıÖzet: Temel String Fonksiyonları