• 28-09-2018, 15:30:16
    #1
    Hayırlı cumalar.

    diziler içinde arama yapmak istiyorum dizinin içinde yaklaşık 50 bin rakama var .

    dizi içindeki rakam örnek = 5-20-1-2-9-16-22-45-23-8-33-1-2-9-75 bu şekilde olduğunu düşünelim



    programda 3 tane textbox var .

    1'ci textbox = degeri 1

    2'ci textbox = degeri 2

    3'ci textbox = degeri 9

    Program girilen değerleri 1-2-9 dizi içinde arama yapacak , bu sıralamada aynı var ise bu numaradan sonrakini bana göstermesini istiyorum yani elde etmek istediğim sonuc 16 ve 75 rakamıdır.

    umarın anlatabilmişimdir. bu konuda yardım edebilirmisiniz.
  • 28-09-2018, 15:53:39
    #2
    Ben test için textboxsuz yazmıştım. Textbox ile kullanmak için List<int> test = diziTara(new int[] { Convert.ToInt32(t1.Text), Convert.ToInt32(t2.Text), Convert.ToInt32(t3.Text) }, ref diziTest); bu şekilde değiştirebilirsiniz.
            private void bAra_Click(object sender, EventArgs e)
            {
                int[] diziTest = { 5, 20, 1, 2, 9, 16, 22, 45, 23, 8, 33, 1, 2, 9, 75 };          
                List<int> test = diziTara(new int[] { 1, 2, 9 }, ref diziTest);
                foreach (var s in test)
                {
                    tS.Text += s.ToString() + " ";
                }
            }
    
      
            private List<int> diziTara(int[] listArancak, ref int[] kaynakDizi)
            {
                List<int> Sonuc = new List<int>();
                for (int x = 0; x < kaynakDizi.Length - listArancak.Length; x++)
                 {
                     for (int j = 0; j < listArancak.Length; j++)
                     {
                         if (listArancak[j] == kaynakDizi[x + j] && j == listArancak.Length -1)
                         {
                             Sonuc.Add(kaynakDizi[x + listArancak.Length]);
                         }
                     }              
                  }
                return Sonuc;
            }
  • 28-09-2018, 17:32:52
    #3
    pr1d3 adlı üyeden alıntı: mesajı görüntüle
    Ben test için textboxsuz yazmıştım. Textbox ile kullanmak için List<int> test = diziTara(new int[] { Convert.ToInt32(t1.Text), Convert.ToInt32(t2.Text), Convert.ToInt32(t3.Text) }, ref diziTest); bu şekilde değiştirebilirsiniz.
            private void bAra_Click(object sender, EventArgs e)
            {
                int[] diziTest = { 5, 20, 1, 2, 9, 16, 22, 45, 23, 8, 33, 1, 2, 9, 75 };          
                List<int> test = diziTara(new int[] { 1, 2, 9 }, ref diziTest);
                foreach (var s in test)
                {
                    tS.Text += s.ToString() + " ";
                }
            }
    
      
            private List<int> diziTara(int[] listArancak, ref int[] kaynakDizi)
            {
                List<int> Sonuc = new List<int>();
                for (int x = 0; x < kaynakDizi.Length - listArancak.Length; x++)
                 {
                     for (int j = 0; j < listArancak.Length; j++)
                     {
                         if (listArancak[j] == kaynakDizi[x + j] && j == listArancak.Length -1)
                         {
                             Sonuc.Add(kaynakDizi[x + listArancak.Length]);
                         }
                     }              
                  }
                return Sonuc;
            }
    teşekürler hocaom çok sağol deniyorum
  • 28-09-2018, 18:29:26
    #4
    kuntakinte adlı üyeden alıntı: mesajı görüntüle
    teşekürler hocaom çok sağol deniyorum
    İlk verdiğim kodda küçük bir bug olmuş aşağıdaki şekilde tam istediğiniz gibi çalışacaktır.
         private List<int> diziTara(int[] listArancak, ref int[] kaynakDizi)
            {
                List<int> Sonuc = new List<int>();
    
                for (int x = 0; x < kaynakDizi.Length - listArancak.Length; x++)
                {
                    for (int j = 0; j < listArancak.Length; j++)
                    {
                        if (listArancak[j] == kaynakDizi[x + j])
                        {
                            if (j == listArancak.Length - 1)
                                Sonuc.Add(kaynakDizi[x + listArancak.Length]);
                        }
                        else break;
                    }
                }
                return Sonuc;
            }
  • 28-09-2018, 18:32:34
    #5
    int[] sorgu = { 5, 20, 1, 2, 9, 16, 22, 45, 23, 8, 33, 1, 2, 9, 75 };
                var birinci = Array.FindIndex(sorgu, item => item == 1) + 1;
                var ikinci = Array.FindIndex(sorgu, item => item == 2) + 1;
                var ucuncu = Array.FindIndex(sorgu, item => item == 9) + 1;
                string yazidir = "sonuc : " + sorgu[birinci] + " " + sorgu[ikinci] + " " + sorgu[ucuncu];
  • 08-02-2019, 00:13:26
    #6
    Üyeliği durduruldu
    Bence bu yolla gitmen daha mantıklı sadece dizi adındaki diziye sen textbox itemelrini ekletip yapabilirsin. Ve sayılar dizisinde farkındaysan eklemeler de yaptımki sen bu kodda dizi eleman sayısı yada indexi ne olursa olsun hataya düşmek yerine sadee istediğin koşulu sağladığını görmendir.
    int[] sayilar = { 5, 20, 1, 2, 9, 16, 22, 45, 23, 8, 33, 1, 2, 9, 25, 1, 2, 9, 1, 2, 8, 15 };
                int[] dizi = { 1, 2, 9 };
                for (int i = 0; i < sayilar.Length; i++)
                {
                    if (i + dizi.Length < sayilar.Length)
                    {
                        int kontrol = 0;
                        for (int j = 0; j < dizi.Length; j++)
                        {
                            if (dizi[j] == sayilar[j + i])
                            {
                                kontrol++;
                            }
                        }
                        if (kontrol == dizi.Length)
                        {
                            Console.WriteLine("Eşleşen sayılar: " + sayilar[i + dizi.Length], "");
                        }
                    }
    
                }
                Console.ReadLine();
  • 08-02-2019, 20:15:15
    #7
    Kimlik doğrulama veya yönetimden onay bekliyor.
    int [] numbers = { 5, 20, 1, 2, 9, 16, 22, 45, 23, 8, 33, 1, 2, 9,75 };
                int[] searchingNumbers = { 1, 2, 9 };
    
                for(int i = 0; i< numbers.Length; i++)
                {
                    if(numbers.Skip(i).Take(searchingNumbers.Length).SequenceEqual(searchingNumbers) )
                    {
                        try
                        {
                            MessageBox.Show(numbers[i + searchingNumbers.Length].ToString());
                        }catch
                        {
                        }
                       
                    }
                }
    bir kodda benden. nası hoşuna giderse