Ş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.
nası yani ?
ş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.
ş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 ?
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.
ş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.
@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
e tamam o dediklerin istenmeyen olmuyor mu?
üstad istenmeyen oluyor da onların listesi çok uzundur, yaz yaz bitmeyebilir :)
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?
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.
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.
şö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;
}
}
}
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.
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)
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.