Finale 15 puan ek olacak bir sorunum var canlar.
Şimdi ben çan eğrisi programı yazacağım da, hatasız olması gerekiyor.
Örneğin, Ad soyad kısmını kullanıcıdan istediğimde bana geçersiz karakter girdiğinde yanlış girdiğini ona söylemem gerek. Haliyle bu numarada da geçerli olacak.
Bunu nasıl yapacağım. Düşünüyorum düşünüyorum yok bulamıyorum.
Yardım edin mutlu edin öğrenciyi.

tenk yu.

 

girilen stringi karakter karakter kontrol et.

kim milton nielsen

nası yani ?

baris daima

şimdi hatalı olacak karakterler belli. o karakter grubuyla, girilen isim/soyisim, numara grubunu karşılaştırıcaksın. bunu yaparken de girilen bilgiyi karakter karakter kontrol etmen lazım, yolu o.

kim milton nielsen

şimdi adamdan ad soyad girmesini istedik ama ağamız bize slso9s82ædld gibisinden bir şey yazdı. bunu ASCII kodlarıyla tek tek kontrol et mi demek istedin patron ?

baris daima

hayır. şimdi bu girdiği karakter dizisi değil mi? evet, öyle. o zaman 0. elemandan uzunluğu-1.elemana kadar giden bir döngüde 0.eleman ile istenmeyen karakter 1.eleman ile istenmeyen karakter n.eleman ile istenmeyen karakter .... şeklinde karşılaştırman gerekir.

kim milton nielsen

şu işi regex kullanmadan tam yapmak çok uzun olmaz mı? geçersiz karakterler bir yana işin içine boşluk girdi mi karışır iyice.

hocanın hatasızdan kastı ne ola ki?

ekleme: tek tek kontrol etme işleminde numara için konuşuyorum dizi[i]!=9veya8veya... şeklinde döngüye sokabilirsin.

nickini vermek istemeyen uye

@kim milton nielsen, istenmeyen karakter gibi bir durum yok ortada. ben tam izah edemedim. ad soyad girilmesi istendiğinde örneğin rakam tuşladığında bunun hatalı olduğunu, aynı şekilde öğrencinin numarasını girilirken &%+sjs gibi bir şey yazdığında bu yanlış doğru gir diyecek bir şeyi nasıl yazabilirim onu demek istemiştim.
@ nickini vermek istemeyen uye, kim milton'a söylerken aslında hocanın hatasızdan kastını anlatmaya çalıştım. adam diyor ki, siz her türlü çan programını yazarsınız ben sizden ayrıntıları düşündünüz mü onu öğrenmek istiyorum diyor ve yukarıdaki yazdığım örneği veriyor.
kolay gibi görünen ama zor olan bir ödev bu maalesef.

baris daima

@baris
e tamam o dediklerin istenmeyen olmuyor mu?

kim milton nielsen

üstad istenmeyen oluyor da onların listesi çok uzundur, yaz yaz bitmeyebilir :)

baris daima

isim için:
dadadssf geçerli
%daa geçersiz
klsjdmklnasmd23 geçersiz
kdlajkdka dkajdka geçerli
dlkajdkand dadad dadag gsfs geçersiz

bu durumlardan hangilerini kontrol etmek istiyorsun?

nickini vermek istemeyen uye

yav 10 tane karakter rakamlar için, diğeri de 35-40 bişey sanırım. iki tane dizi yaparsın biri bi tanesi için biri bi tanesi. iki satır daha fazla değil.

kim milton nielsen

isim için:
dadadssf geçerli
%daa geçersiz
klsjdmklnasmd23 geçersiz
kdlajkdka dkajdka geçerli
dlkajdkand dadad dadag gsfs geçersiz

sonucuya da geçerli diyebiliriz aslında. Sonuçta adamın 3 adı bir soyadı olabilir :)
evet bunları girdiğinde geçersiz diye belirttiklerinde uyarı verecek, kabul etmeyecek durum.

baris daima

şöyle bir şey olabilir:
string isim;
string alfabe={a,b,c,d,e....)// alfabeyi tanımla;
scanf-isim;
while(isim[i])
{
if(isim[i]!=boşluk)
{
for(int j=0;j<29;j++)
{
if(isim[i]!=alfabe[j];
"hatalı giriş";
break;
}
}

}

nickini vermek istemeyen uye

boşluk olma durumunu yazmadım.
kaç boşluğa izin var onu ayarlamak lazım. sonucta
dakd da da da a da d s s s s s s s s s s s s da girilebilir.
boşluğa izin versek
" n" şeklinde de girilebilir.

nickini vermek istemeyen uye

dediklerini de ekledikten sonra ben kodunu toparlayayım ondan sonra sana göndereyim müsait anında bakıp geri dönüşü yaparsın üstad olabilir mi ? çok mu çok oluyorum ? :) (haddini aşmak istemeyen smiley)

baris daima

hocam ben de öğrenciyim. sadece bir dönem C gördüm. (yardımcı olmak isterim tabi)
düşünme mantığımı buraya yazdım ki hata gören olursa ya da ekleme yapan çıkarsa daha yararlı olur.

--bir de c'de diziyi bölme işini nasıl yapıyorduk hatırlamıyorum. ama ilk başta girilen string i boşluklara göre parçalara ayırıp yeni bir diziye atarsak daha kolay olur. hem kelime sayısını tutmuş oluruz hem de hepsini aynı yolla alfabeyle karşılaştırırız.

nickini vermek istemeyen uye
1

mobil görünümden çık