08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

{<br />

char str[SIZE];<br />

int word_counter = 0;<br />

int k;<br />

int word_flag = OUTWORD;<br />

printf("bir yazi girin : ");<br />

gets(str);<br />

for (k = 0; str[k] != '\0'; ++k)<br />

if (is_sep(str[k]))<br />

word_flag = OUTWORD;<br />

else if (word_flag == OUTWORD) {<br />

word_flag = INWORD;<br />

word_counter++;<br />

}<br />

printf("toplam %d sozcuk var!\n", word_counter);<br />

}<br />

return 0;<br />

int is_sep(int ch)<br />

{<br />

char seps[] = " \t.,;:?!";<br />

int k;<br />

}<br />

for (k = 0; seps[k] != '\0'; ++k)<br />

if (ch == seps[k])<br />

return 1;<br />

return 0;<br />

is_sep işlevi, sıra numarasını aldığı bir karakterin, sözcükleri birbirinden ayıran ayraç<br />

karakterlerinden biri olup olmadığını sınıyor.<br />

main işlevi içinde tanımlanan word_flag isimli bayrak değişkeni, bir sözcüğün içinde mi<br />

dışında mı olunduğunu gösteriyor. Bu değişkene ilkdeğer olarak, kelimenin dışında (OUT)<br />

değerinin verildiğini görüyorsunuz.<br />

Bir for döngü deyimiyle yazının her bir karakterinin ayraç karakteri olup olmadığı<br />

sınanıyor. Eğer ayraç karakteri ise word_flag değişkenine OUT değeri atanıyor. Eğer<br />

karakter ayraç karakteri değilse ve aynı zamanda bayrağın değeri OUT ise, bayrağa IN<br />

değeri atanıyor ve sözcük sayısını tutan sayacın değeri 1 artırılıyor.<br />

Aşağıdaki programda, bir yazının içinde ardışık olarak yer alan eş karakterlerin sayısı bire<br />

indiriliyor:<br />

#include <br />

#define SIZE 100<br />

int main()<br />

{<br />

char str[SIZE];<br />

int index = 0;<br />

int k;<br />

printf("bir yazi girin : ");<br />

gets(str);<br />

for (k = 0; str[k] != '\0'; ++k)<br />

224

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!