istenmektedir. Bunun için kullanıcı metin parçasını, aşağıda belirtilen kısıtlara uygun olarak
ve tek seferde klavyeden girecektir:
Kelimelerden sonra sadece boşluk, virgül veya noktalı virgül karakterlerinden birisi
gelebilir.
Cümlelerden sonra sadece nokta, soru işareti, ünlem veya iki nokta üst üste
karakterlerinden birisi gelebilir.
Kelime aralarında sadece bir karakter olabilir.
Kelimeler sadece Latin ve Türk alfabelerinde yer alan harfler içerebilir.
# karakteri, metnin bittiğini belirtir.
Veri girişleri sırasında hatalı giriş yapılmayacağı varsayılmalı ve metnin bittiğini gösteren
karakterden sonrası dikkate alınmamalıdır. Metindeki her bir cümleyi oluşturan harfler, bir dik
üçgen oluşturacak şekilde (1. satırda 1 harf, 2. satırda 2 harf, …, n. satırda n harf v.b.) ekrana
basılmalıdır. Basılan harflerin sayısı yeterli olmadığında, son satırın kalan kısmı için +
karakteri kullanılmalıdır. Metindeki tüm cümleler bu şekilde ekrana basıldıktan sonra ise
aşağıda listelenen istatistiksel bilgiler ekrana yazdırılmalıdır:
Metindeki toplam cümle sayısı
Metindeki toplam kelime sayısı
Metindeki toplam karakter sayısı
Metindeki toplam harf sayısı
Metindeki Latin alfabesinde yer almayan harflerin sayısı ve toplam harf sayısı içindeki
yüzdesi
Cümlelerin ortalama kelime sayısı
Kelimelerin ortalama harf sayısı
4 harften kısa kelimelerin sayısı
10 harften uzun kelimelerin sayısı
En uzun kelimenin harf sayısı
3 kelimeden kısa cümlelerin sayısı
#include <stdio.h>
#include <stdlib.h>
int main()
{
char harf;
int toplamCumle=0,toplamSozcuk=0,toplamKarakter=0,toplamHarf=0,latinSay=0,cumledekiharf=0;
int kisa_sozcukSayisi=0, uzun_sozcukSayisi=0,enUzunHarf=0, kisaCumle=0,satir=1,sutun=1,kelimedekiHarf=0,cumledekiSozcuk=0;
float yuzde;
printf("Lutfen bir cumle veya kelime yaziniz: \n\n");
fflush(stdin);
harf=getchar();
printf("\n");
do{
toplamKarakter++;//harfler ve imla iþaretlerinin sayisi
//metindeki toplam harflerin sayisi toplamKarakter-toplamSozcuk formuluyle bulunur.cunku her kelime ayni zamanda harf olmayan
//karakterlerin sayisi demektir.
kelimedekiHarf++;//o an okunan kelimenin harf sayisi
if(harf==' '||harf==','||harf==';'){//eger kelime bittiyse;
toplamSozcuk++;//metindeki toplam kelime sayisi bir arttirilir
//þu anki harf degiskeni bosluk,virgül ya da
kelimedekiHarf--;//noktali virgül olduðunda harfler bir azaltilir
cumledekiharf+=kelimedekiHarf;//o anki cumle içindeki harflerin sayisi
cumledekiSozcuk++;//o anki cumledeki kelime sayisi
if(kelimedekiHarf>enUzunHarf) enUzunHarf=kelimedekiHarf;//karsilastirmalar
if(kelimedekiHarf>10) uzun_sozcukSayisi++;
if(kelimedekiHarf<4) kisa_sozcukSayisi++;
kelimedekiHarf=0;//yeni kelime için harf sayýsý sýfýrlanýr
}
else if(harf=='.'||harf=='?'||harf==':'||harf=='!'){//eger cümle bittiyse
toplamCumle++;//metindeki cumle sayisi bir arttirilir
toplamSozcuk++;//cümlenin son kelimesi için de arttirma yapilir
kelimedekiHarf--;
cumledekiharf+=kelimedekiHarf;
cumledekiSozcuk++;
if(sutun==1) satir--;//eger son satirin ilk karakteri nokta,?,: veya ! ise satir sayisi azaltilir çünkü ücgen dolmustur
if(cumledekiSozcuk<3) kisaCumle++;
if(kelimedekiHarf>enUzunHarf) enUzunHarf=kelimedekiHarf;
if(kelimedekiHarf>10) uzun_sozcukSayisi++;
if(kelimedekiHarf<4) kisa_sozcukSayisi++;
if( cumledekiharf<(satir)*(satir+1)/2){//dik üçgenin n satirina (n*n+1)/2 kadar eleman sayar.(1den n'e kadar olan sayilarin toplami )
while(cumledekiharf<(satir)*(satir+1)/2){//bos yerlere + yazilir
printf("+");
cumledekiharf++;
}
printf("\n");
}
printf("\n");
satir=1;//yeni cümle için satira ve sutuna baslangic degeri verilir.
sutun=1;
cumledekiharf=0;
kelimedekiHarf=0;
cumledekiSozcuk=0;
}else
{ //eger harf okunduysa;
printf("%c",harf);
toplamHarf++;
if(harf<0) latinSay++;//Turkce karakter olup olmadigi incelenir
if(satir==sutun)
{//satir doldugunda yeni satira gecilir
printf("\n");
satir++;//satir sayisi bir arttirilir
sutun=1;//yeni sütun 1 olur
}
else sutun++;//satir dolmadiysa sütun bir arttirilir
}
harf=getchar();//yeni karakter alinir
}while(harf!='#');// # iþaretini görene kadar karakter alma islemi gerçeklesirilir
yuzde=((float)latinSay*100/(toplamKarakter-toplamSozcuk));
printf("Metindeki toplam cumle sayisi: %d\n",toplamCumle);
printf("Metindeki toplam sozcuk sayisi: %d\n",toplamSozcuk);
printf("Metindeki toplam karakter sayisi: %d\n",toplamKarakter);
printf("Metindeki toplam harf sayisi: %d\n",toplamKarakter-toplamSozcuk);
printf("Metindeki Latin alfabesinde yer almayan harflerin sayisi ve toplam harf sayisi icindeki yuzdesi: %d ve %%%.2f\n",latinSay,yuzde);
printf("Cumlelerin ortalama sozcuk sayisi: %.2f\n",(float)toplamSozcuk/toplamCumle);
printf("Sozcuklerin ortalama harf sayisi: %.2f\n",(float)toplamHarf/toplamSozcuk);
printf("4 harften kisa kelimelerin sayisi: %d\n",kisa_sozcukSayisi);
printf("10 harften uzun kelimelerin sayisi: %d\n",uzun_sozcukSayisi);
printf("En uzun kelimenin harf sayisi: %d\n",enUzunHarf);
printf("3 kelimeden kisa cumlelerin sayisi: %d\n",kisaCumle);
return 0;
}
Hiç yorum yok:
Yorum Gönder