Tekrar: Kelime Frekans Sayacı
Coddy'nin C Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 63 / 63.
Görev
KolayMetin girdisini analiz etmek için bir kelime sıklığı sayacı uygulayan bir C programı oluştur. Programın şunları yapması gerekir:
countWordOccurrencesadlı bir işlev yaz:- İki
char*parametresi almalı:sentencevetargetWord - 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)
- İki
extractWordadlı bir işlev yaz:- Bir
char*sentence, bir tam sayıstartIndexve birchar*word parametresi almalı - Çıkarılan kelimeden sonraki dizinin indeksini belirten bir tam sayı döndürmeli
startIndexkonumundan başlayarak boşluk veya null sonlandırıcı bulunana kadar tek bir kelime çıkarmalı- Çıkarılan kelimeyi
wordparametresinde saklamalı - Çıkarılan kelimeyi tamamlamak için bir null sonlandırıcı eklemeli
- Bir
analyzeTextadlı 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)
- Bir
- main işlevinde:
- 200 boyutunda
inputSentenceadlı bir karakter dizisi tanımla - 50 boyutunda
searchWordadlı bir karakter dizisi tanımla - Girdiden bir cümle oku (boşluklarla ayrılmış birden fazla kelime içerebilir)
- Aranacak hedef kelimeyi oku
analyzeTextişlevini çağır ve toplam kelime sayısını şu tam biçimde yazdır:Total words: [count]countWordOccurrencesiş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 foundyazdır - Sıklık 0.0%'dan büyük ancak 20.0%'dan küçükse:
Category: Rareyazdır - Sıklık 20.0% ile 50.0% arasındaysa (sınırlar dahil):
Category: Commonyazdır - Sıklık 50.0%'dan büyükse:
Category: Frequentyazdır
- Sıklık 0.0% ise:
- 200 boyutunda
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
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ıKendi başına pratik yap: Online C derleyicisi