1) Metindeki kelimeleri, sayıları ve cümlelerin sayısını bulan C programı
Çözüm 1:
#include<stdio.h>
#include<string.h>
const char* metin = "Bu gun hava cok guzel ama yaz mevsimi icin biraz serin.\
Bu sene bir turlu yaz gelemedi. Gelse ne olacak ki? Salgin yuzunden kimse bir\
yere gidemiyor. Kalabaliklardan uzak durmak zorunda olmak berbat bir sey. Bu gun gunlerden Persembe.\
Bu gun pazara gittim. Pazardan 3 kg elma, 2 kg portakal aldım. Saat 9'u 25 gece geldim. Ben 1999 yılında dogdum.";
int main()
{
int kelime = 0;
int cumle = 0;
int sayi = 0;
int uzunluk = strlen(metin);
for (int i = 0; i < uzunluk; i++) {
if (metin[i] == ' ') {
kelime = kelime + 1;
}
if (metin[i] == '.' || metin[i] == '?') {
cumle += 1;
if (metin[i + 1] != ' ') {
kelime = kelime + 1;
}
}
if (metin[i] == '1' || metin[i] == '2'||metin[i] == '3' || metin[i] == '4' ||
metin[i] == '5' || metin[i] == '6' || metin[i] == '7' || metin[i] == '8' ||
metin[i] == '9') {
if(metin[i-1] == '1' || metin[i-1] == '2' || metin[i-1] == '3' || metin[i-1] == '4' ||
metin[i-1] == '5' || metin[i-1] == '6' || metin[i-1] == '7' || metin[i-1] == '8' ||
metin[i-1] == '9')
sayi = sayi - 1;
sayi = sayi + 1;
}
}
printf("%d", kelime);
printf("\n%d", cumle);
printf("\n%d", sayi);
return 0;
}
Çözüm 2:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main()
{
const char* cc = "Bu gun hava cok guzel ama yaz mevsimi icin biraz serin.\
Bu sene bir turlu yaz gelemedi. Gelse ne olacak ki? Salgin yuzunden kimse bir\
yere gidemiyor. Kalabaliklardan uzak durmak zorunda olmak berbat bir sey. Bu gun gunlerden Persembe.\
Bu gun pazara gittim. Ben pazardan 3 kg elma, 2 kg portakal aldim. Saat 9 da geldim. Ben 1999 yilinda dogdum.";
int kelime = 0;
int cumle = 0;
int sayi = 0;
int result1;
int result2;
int result3;
for (int i = 0; i < strlen(cc); i++)
{
// Kelime sayısı bulunur
result1 = isspace(cc[i]);
if (result1 != 0)
{
kelime = kelime + 1;
}
//Noktalama işaretleri bulunur
result2 = ispunct(cc[i]);
if (result2 != 0)
{
if(cc[i]!=',')
cumle= cumle + 1;
}
// sayıların bulunması
result3 = isdigit(cc[i]);
if (result3 != 0) {
if(isdigit(cc[i+1]) == 0)
sayi = sayi + 1;
}
}
// kelime sayısına bir eklenir.
kelime = kelime + 1;
printf("\nKelime sayisi = %d\n", kelime);
printf("\nCumle sayisi = %d\n", cumle);
printf("\nSayi sayisi = %d\n", sayi);
return 0;
}
#include <stdio.h>
#include <semaphore.h>
sem_t tek;
sem_t cift;
// tekleri yazan thread
void* thread1(void* arg){
int i;
for(i=0;i<10000;i++){
sem_wait(&tek);
if(i%2 != 0){
printf("Bu thread calisti %ld tek sayi = %d\n",(long)arg, i);
}
sem_post(&cift);
}
return NULL;
}
// çiftleri yazan thread
void* thread2(void* arg){
int i;
for(i=0;i<10000;i++){
sem_wait(&cift);
if(i%2 == 0){
printf("Bu thread calisti %ld cift sayi = %d\n",(long)arg, i);
}
sem_post(&tek);
}
return NULL;
}
int main(){
sem_init(&tek,0,1);
sem_init(&cift,0,1);
pthread_t t1,t2;
long one =1;
long two = 2;
pthread_create(&t1,NULL,thread1,(void*)one);
pthread_create(&t2,NULL,thread2,(void*)two);
pthread_join(t1,NULL);
pthread_join(t2,NULL);
sem_destroy(&tek);
sem_destroy(&cift);