C# Dizi Karşılaştırma ile ilgili Sorunum

madrabaz13

Normal Üye
Katılım
28 Ocak 2021
Mesajlar
2
Beğeniler
2
Merhaba gerekli form uygulamasını yaptım ancak bir kod parçasına ihtiyacım var durumu şöyle anlatayım ;
İki tane 4 elemanlık int dizimiz var örneğin : 1.Dizi {1,5,3,4} 2.Dizi {2,1,3,4} olsun.
Dizileri karşılaştırırsak 1,3,4 sayıları ikisindede mevcut 3 ve 4 sayısı iki dizidede aynı indexste olduğu için +2 yani iki tane doğru indexs var ancak 1 sayısıda iki dizide olmasına rağmen indexsleri farklı iki dizidede bir sayısının olduğunu fakat farklı indekste olduğunu belirtmek için -1 yazdırdık.
dizilerin birinde beş diğerinde iki elemanı yok dolayısıyla bunları belirtmemize gerek yok sadece ikisindede mevcut olan elemanları karşılaştırıyoruz.
"İpucu : +2 elemanı bildiniz ancak -1 eleman farklı yerde." şeklinde labele yazıcak.
Kod parçasının amacı bunu yapmak kullanacağım proje ise bir sayı bulma oyunu bu şekilde kullanıcıya ipuçları vericek.

Ben şu şekilde yapmaya çalıştım ;
Yardımlarınızı bekliyorum teşekkürler.
 
C#:
/Test de edebilmek için iki liste yazıveriyorum.
int[] birinciListe = new int[] { 3, 4, 5, 6 }, ikinciListe = new int[] { 5, 4, 1, 6 };
//Sonuçları tutacağımız iki değişken lazım.
int dogruYer = 0, yanlisYer = 0;
//Birinci listenin her elemanını gezeceğiz.
for (int i = 0; i < birinciListe.Length; ++i)
    //Eğer birinci listenin falanıncı elemanı, ikinci listenin falanıncı elemanı ile aynıysa doğru yerdedir.
    if (birinciListe[i] == ikinciListe[i]) ++dogruYer;
    //Eğer ikinci listenin herhangi bir elemanı birinci listenin falanıncı elemanı ile aynıysa yanlış yerdedir.
    else if (ikinciListe.Any(n => birinciListe[i] == n)) ++yanlisYer;
    //yoksa tamamen yanlış. Hiç bir şeyi artırmıyoruz.
//Eğer birinci listenin bütün elemanları doğru yerdeyse, oyun bitmiştir.
if (dogruYer == birinciListe.Length) MessageBox.Show("Afferim len! Bildin sayıyı!");
//Yoksa cevabı söyleriz.
MessageBox.Show(string.Format("+{0} -{1} ==> {0} sayı doğru yerde, {1} sayı doğru ama yanlış yerde.", dogruYer, yanlisYer));
 

  Şuanda konuyu görüntüleyen kullanıcılar


Üst Alt