Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Facebook, Twitter, Google+ veya e-posta ile paylaşın.
| Sorular | Makaleler | Üyeler | Etiketler  | İletişim
Soru sormak ya da cevap vermek için;
giriş yapın veya üye olun.

Sosyal medya hesaplarınızla da giriş yapabilirsiniz.

Yazılım Soruları

0

C# Kullanıcı adı şifre programı

Merhaba ben 11. Sınıfa yeni geçtim bilişim okuyorum ara sıra kodlama dersi çalışıyorum fakat burda while bölümündeki break yazdığım yer de bir hata var fakat bulamadım break olduğu halde hak bitince hala şifre istiyor yardımcı olabilirmisiniz Lütfen?
        string Kadı, şifre;
        int hak = 3;
        Kadı:
        Console.Write("Kullanıcı adı girin = ");
        Kadı = Console.ReadLine();
        if(Kadı == "Ciguli" || Kadı == "ciguli")
        {
            Console.WriteLine("\nDoğru Kullanıcı adı girilmiştir");
        }
        else
        {
            Console.WriteLine("\nYanlış Kullanıcı adı girilmiştir!!");
            hak = hak - 1;
            Console.WriteLine("\nKalan Hakkınız = " + hak);
            if(hak > 0)
            {
                goto Kadı;
            }
            while(hak == 0)
            {
                Console.Write("Hakkınız bitmitir");
                break;
            }
        }
        şifre:
        Console.Write("Şifre girin = ");
        şifre = Console.ReadLine();
        if (şifre == "123" || şifre == "321")
        {
            Console.Write("Doğru Şifre");
        }
        else
        {
            Console.Write("Yanlış Şifre");
            if (hak > 0)
            {
                goto şifre;
            }
            if (hak == 0)
            {
                Console.Write("Yanlış şifre");
            }
        }


Soran:17.06.19 15:14
misafir  

1 Cevap

0
while, belirli bir şart sağlandığı sürece kendi bloğu içindeki işlemleri tekrar etmek için kullanılır. Senin yazdığın while ifadesinin hiç bir fonksiyonu yok. Herhalde

if (hak == 0) ...

demek istedin. Bunu kullanıp sonunda bir bitiş etiketine yönlendirmen gerekir. Senin kodunda program aşağı doğru devam eder ve dolayısıyla şifre istediği bölüme gelir.

Yani kodun en sonundaki Bitti etiketine gönderen şöyle bir şey:
if (hak == 0) goto Bitti;

Bunun haricinde kullanıcı adı ve şifre alınan bir kodda şifre ve kullanıcı adı için ayrı ayrı bloklar kullanman uygun değil. Uygulamada olduğu gibi her ikisini de arka arkaya alıp sonra değerlendirmelisin.

Etiketler yerine bir while döngüsü kullanan ve kalan deneme hakkını gösteren şöyle bir şey yapabilirsin:

    class Program
    {
        static void Main(string[] args)
        {
            const string AD = "ciguli";
            const string SIFRE = "123";
            const int DENEME_HAKKI = 3;
            int deneme = 0;
            string girilenAd, girilenSifre;
            while (deneme < DENEME_HAKKI)
            {
                Console.Write("Kullanıcı adı girin = ");
                girilenAd = Console.ReadLine();
                Console.Write("Şifreyi girin = ");
                girilenSifre = Console.ReadLine();
                if (girilenAd == AD && girilenSifre == SIFRE)
                {
                    Console.WriteLine("Doğru kullanıcı adı ve şifre girdiniz.");
                    break; // while döngüsünden çık.
                }
                Console.WriteLine("Yanlış kullanıcı adı veya şifre girdiniz.");
                deneme++;
                Console.Write("Kalan hakkınız ");
                Console.WriteLine(DENEME_HAKKI - deneme);
            }
            Console.WriteLine("Çıkmak için bir tuşa basın.");
            Console.ReadKey();
        }
    }


Cevaplayan: 17.06.19 20:45
cevapsitesi
102,034p 15ü
Cevabı seçen: 29.09.19 22:46
cevapsitesi   102,034p 15ü