C Dersi Sınavım için tavsiye

canosi007

Hectopat
Katılım
26 Ocak 2016
Mesajlar
20
En iyi cevaplar
0
Beğeniler
0
Yer
antalya
Öncelikle herkese iyi forumlar. Yazılım mühendisliği birinci sınıfım. Neyse çok sıkmadan sizi konuyu anlatayım. Bilgisayar programlama dersinin finali var ve yapamadığım birkaç soru var. Sizden yardım almak istedim bu yüzden. Hemen sorulara geçiriyorum.
1.Türkçe dilinde iki ünlü yan yana gelemez. Bu soruda yazdığımız programla iki aynı sesli karakterin yan yana gelip gelmediğini kontrol etmemiz isteniyor.
2.F, J, h harfleri Türkçe kelimelerde yoktur. Kelimede bu karakterlerin olup olmadığını bulmamızı istiyor hocamız.
3. C, Ğ, L, M, N, R, V, Z harfleri kelimenin başında bulunamaz.
Ve 4. Başta çift sessiz harf bulunmaz.

Sorular bunlar diğer soruları kendim halledebildim. Bu sorularda yardımınıza ihtiyacımın olduğunu düşündüm. Desteklerini bekliyorum.

Tekrardan iyi forumlar.
 
Son düzenleyen: Moderatör:

Jelly Beanci

Kilopat
Katılım
2 Mart 2014
Mesajlar
1.523
En iyi cevaplar
15
Beğeniler
1.198
Yer
nullptr Excepiton! Location pointer is null.
\Regex\ (Regular Expressions) kullanmanıza izin var mı yoksa saf C ile mi yazmanızı istiyor.
Eğer Regex serbest ise bahsedilen ifadeleri hazırlamak hiç de uzun sürmez.

Ki hiç bir ek kütüphane vs kullanmadan da 3. ve 4. sorular String'in(char[]) 0. ve 1. elemanına bakılarak bile çözülebilir.
Benzer şekilde 2. soru da lineer bir arama ile basitçe yapılabilir.
 
Son düzenleme:

Vavien.

Gigapat
Katılım
20 Aralık 2014
Mesajlar
5.676
En iyi cevaplar
40
Beğeniler
5.176
Yer
Istanbul, Turkey
İlki için sesli harfleri diziye koyarsın. Bir değişken tanımlayıp sıfır değerini verirsin. Sesli harf görünce 1 olur, sessiz görünce 0. Her karakter için eskisi ile kontrol edersin. Eskisi 1 iken yenisi de 1 olursa iki tane sesli gelmiş demektir.
İkinci için o harfleri bir diziye koyarsın. Sonrasında sana verilen metnin tüm karakterlerini kıyaslarsın.
Üçüncüde o harfleri diziye atıp kontrol edersin.
Dördüncü için bir değişkeni sıfır olarak tanımlarsın. İlk kararkter sesli değilse artırırsın, ikinci için de aynısını yaparsın. Değişken kelime sonunda 2 ise ikisi de sessizdir.
 

Jelly Beanci

Kilopat
Katılım
2 Mart 2014
Mesajlar
1.523
En iyi cevaplar
15
Beğeniler
1.198
Yer
nullptr Excepiton! Location pointer is null.
Kod:
 kural1 = "(([a-zA-ZğĞüÜşŞiİöÖçÇ])*[aAeEıIiİoOöÖuUüÜ]{2,}([a-zA-ZğĞüÜşŞiİöÖçÇ])*)+"
 kural2 = "(([a-zA-ZğĞüÜşŞiİöÖçÇ])*([fFjJhH]+)([a-zA-ZğĞüÜşŞiİöÖçÇ])*)+"
 kural3 = "(([cCğĞlLmMnNrRvVzZ])([a-zA-ZğĞüÜşŞiİöÖçÇ])*)"
 kural4 = "(([A-Za-zğĞşŞçÇ&&[^aAeEıIiİoOöÖuUüÜ]]){2,}([a-zA-ZğĞüÜşŞiİöÖçÇ])*)"
Dediğim gibi Regex kullanılabiliyorsa her bir soru tek satırda yapılabilir.
 
KS
C

canosi007

Hectopat
Katılım
26 Ocak 2016
Mesajlar
20
En iyi cevaplar
0
Beğeniler
0
Yer
antalya
Kod:
 kural1 = "(([a-zA-ZğĞüÜşŞiİöÖçÇ])*[aAeEıIiİoOöÖuUüÜ]{2,}([a-zA-ZğĞüÜşŞiİöÖçÇ])*)+"
kural2 = "(([a-zA-ZğĞüÜşŞiİöÖçÇ])*([fFjJhH]+)([a-zA-ZğĞüÜşŞiİöÖçÇ])*)+"
kural3 = "(([cCğĞlLmMnNrRvVzZ])([a-zA-ZğĞüÜşŞiİöÖçÇ])*)"
kural4 = "(([A-Za-zğĞşŞçÇ&&[^aAeEıIiİoOöÖuUüÜ]]){2,}([a-zA-ZğĞüÜşŞiİöÖçÇ])*)"
Dediğim gibi Regex kullanılabiliyorsa her bir soru tek satırda yapılabilir.

Öncelikle ilginiz için teşekkür ederim.
Regex kullanmamız yasak, saf c ile yazmamız gerekiyor.
İlki için sesli harfleri diziye koyarsın. Bir değişken tanımlayıp sıfır değerini verirsin. Sesli harf görünce 1 olur, sessiz görünce 0. Her karakter için eskisi ile kontrol edersin. Eskisi 1 iken yenisi de 1 olursa iki tane sesli gelmiş demektir.
İkinci için o harfleri bir diziye koyarsın. Sonrasında sana verilen metnin tüm karakterlerini kıyaslarsın.
Üçüncüde o harfleri diziye atıp kontrol edersin.
Dördüncü için bir değişkeni sıfır olarak tanımlarsın. İlk kararkter sesli değilse artırırsın, ikinci için de aynısını yaparsın. Değişken kelime sonunda 2 ise ikisi de sessizdir.
Çok teşekkür ederim deneyeceğim. Yarın teslim etmem gerekiyor, bugün sadece bunun ile uğraşacakmışım gibi.
 

detista

Kilopat
Katılım
20 Kasım 2016
Mesajlar
1.950
En iyi cevaplar
9
Beğeniler
1.198
Yer
Istanbul
Öncelikle herkese iyi forumlar. Yazılım mühendisliği birinci sınıfım. Neyse çok sıkmadan sizi konuyu anlatayım. Bilgisayar programlama dersinin finali var ve yapamadığım birkaç soru var. Sizden yardım almak istedim bu yüzden. Hemen sorulara geçiriyorum.
1.Türkçe dilinde iki ünlü yan yana gelemez. Bu soruda yazdığımız programla iki aynı sesli karakterin yan yana gelip gelmediğini kontrol etmemiz isteniyor.
2.F, J, h harfleri Türkçe kelimelerde yoktur. Kelimede bu karakterlerin olup olmadığını bulmamızı istiyor hocamız.
3. C, Ğ, L, M, N, R, V, Z harfleri kelimenin başında bulunamaz.
Ve 4. başta çift sessiz harf bulunmaz.

Sorular bunlar diğer soruları kendim halledebildim. Bu sorularda yardımınıza ihtiyacımın olduğunu düşündüm. Desteklerini bekliyorum.

Tekrardan iyi forumlar.
Kontrol edilecek olan karakter dizisini kullanıcı klavyeden mi girecek? Yoksa dosyadan mı okunacak? Kontrol sonunda ekrana girdiğiniz karakter dizisi kabul edildi/edilmedi gibi bir yazı mı yazdırılacak? Yoksa başka bir şey mi yapılacak?
 
KS
C

canosi007

Hectopat
Katılım
26 Ocak 2016
Mesajlar
20
En iyi cevaplar
0
Beğeniler
0
Yer
antalya
Kontrol edilecek olan karakter dizisini kullanıcı klavyeden mi girecek? Yoksa dosyadan mı okunacak? Kontrol sonunda ekrana girdiğiniz karakter dizisi kabul edildi/edilmedi gibi bir yazı mı yazdırılacak? Yoksa başka bir şey mi yapılacak?
Karakter dizisi kullanıcıdan alınacak, o bölümde sıkıntı yok yazdırmada da sıkıntı yok, tek sıkıntı kelime kontrolü yapamıyorum.
İlki için sesli harfleri diziye koyarsın. Bir değişken tanımlayıp sıfır değerini verirsin. Sesli harf görünce 1 olur, sessiz görünce 0. Her karakter için eskisi ile kontrol edersin. Eskisi 1 iken yenisi de 1 olursa iki tane sesli gelmiş demektir.
İkinci için o harfleri bir diziye koyarsın. Sonrasında sana verilen metnin tüm karakterlerini kıyaslarsın.
Üçüncüde o harfleri diziye atıp kontrol edersin.
Dördüncü için bir değişkeni sıfır olarak tanımlarsın. İlk kararkter sesli değilse artırırsın, ikinci için de aynısını yaparsın. Değişken kelime sonunda 2 ise ikisi de sessizdir.

Dediğiniz üzere yaptım iki soruyu fakat bir problem çıktı karşıma iki soruda da .
Dediğinizi yaptığımda girilen kelimenin "kaan" olduğunu düşünün sessiz 1 oldu sesli 1 - 2 oldu sessiz 2 oldu. Ya da sessiz harf değişkeni atamayıp direk harften gittiğimde ise bazı kelimelere uymakta bazılarına uymamakta. O mantık hatasında yardım eder misiniz?
 
Son düzenleme:

detista

Kilopat
Katılım
20 Kasım 2016
Mesajlar
1.950
En iyi cevaplar
9
Beğeniler
1.198
Yer
Istanbul
Karakter dizisi kullanıcıdan alınacak, o bölümde sıkıntı yok yazdırmada da sıkıntı yok, tek sıkıntı kelime kontrolü yapamıyorum.
C:
#include <stdio.h>
#include <string.h>

int main() {
    char a[256];
    printf("Lütfen bir karakter dizisi giriniz: ");
    scanf("%s", a);
    int b = (int)strlen(a), c, d = 0;
    for(c=0; c<b; c++) {
        if((a[c] == 'a' && a[c+1] == 'a') || (a[c] == 'A' && a[c+1] == 'A') || (a[c] == 'I' && a[c+1] == 'I') || (a[c] == 'o' && a[c+1] == 'o') || (a[c] == 'O' && a[c+1] == 'O') || (a[c] == 'u' && a[c+1] == 'u') || (a[c] == 'U' && a[c+1] == 'U') || (a[c] == 'e' && a[c+1] == 'e') || (a[c] == 'E' && a[c+1] == 'E') || (a[c] == 'i' && a[c+1] == 'i')) {
            printf("Türkçe dilinde iki ünlü yan yana gelemez.\n");
            d = 1;
        }
    }
    for(c=0; c<b; c++) {
        if(a[c] == 'f' || a[c] == 'F' || a[c] == 'j' || a[c] == 'J' || a[c] == 'h' || a[c] == 'H') {
            printf("F, J, H harfleri Türkçe kelimelerde yoktur.\n");
            d = 1;
        }
    }
    if((a[0] == 'b' && a[1] == 'b') || (a[0] == 'B' && a[1] == 'B') || (a[0] == 'c' && a[1] == 'c') || (a[0] == 'C' && a[1] == 'C') || (a[0] == 'd' && a[1] == 'd') || (a[0] == 'D' && a[1] == 'D') || (a[0] == 'f' && a[1] == 'f') || (a[0] == 'F' && a[1] == 'F') || (a[0] == 'g' && a[1] == 'g') || (a[0] == 'G' && a[1] == 'G') || (a[0] == 'h' && a[1] == 'h') || (a[0] == 'H' && a[1] == 'H') || (a[0] == 'j' && a[1] == 'j') || (a[0] == 'J' && a[1] == 'J') || (a[0] == 'k' && a[1] == 'k') || (a[0] == 'K' && a[1] == 'K') || (a[0] == 'l' && a[1] == 'l') || (a[0] == 'L' && a[1] == 'L') || (a[0] == 'm' && a[1] == 'm') || (a[0] == 'M' && a[1] == 'M') || (a[0] == 'n' && a[1] == 'n') || (a[0] == 'N' && a[1] == 'N') || (a[0] == 'p' && a[1] == 'p') || (a[0] == 'P' && a[1] == 'P') || (a[0] == 'r' && a[1] == 'r') || (a[0] == 'R' && a[1] == 'R') || (a[0] == 's' && a[1] == 's') || (a[0] == 'S' && a[1] == 'S') || (a[0] == 't' && a[1] == 't') || (a[0] == 'T' && a[1] == 'T') || (a[0] == 'v' && a[1] == 'v') || (a[0] == 'V' && a[1] == 'V') || (a[0] == 'y' && a[1] == 'y') || (a[0] == 'Y' && a[1] == 'Y') || (a[0] == 'z' && a[1] == 'z') || (a[0] == 'Z' && a[1] == 'Z')) {
        printf("Başta çift sessiz harf bulunamaz.\n");
        d = 1;
    }
    if(d==0)
        printf("Girdiğiniz karakter dizisi kabul edilmiştir.\n");
    return 0;
}
 


Yeni konular

Yukarı