• 24-05-2020, 17:41:52
    #1
    Merhaba NxN alanın içinde bulunan 3 farklı noktam odluğu düşünelim. Bu noktalardan hangi ikisinin birbirine komşu olduğunu nasıl bir mantık ile sorgulayabilirim?

    Mesela 5x5 bir alan içerisinde 3 tane noktam olsun;



    Bu A B ve C nin konumunu algılayabiliyorum. 3 konumu bir fonksiyona sokup eğer komşu olan varsa çıktı olarak hangi ikisinin komşu olduğunu bilmek istiyorum.

    Komşuluk şartı noktanın çevresindeki diğer noktaları kapsıyor çapraz geçerli;

    Örneğin A için komşu olan noktalar X ile gösterdim.




    aşağıdaki görseldeki gibi bir durum oluşursa A ve B komşu demesini istiyorum.



    C++ ile kodluyorum. Yardımcı olabilecek olan varsa çok sevinirim. Tıkandım kaldım
  • 24-05-2020, 19:05:15
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Aşağıdaki kodla iki noktanın komşu nokta olma durumunu kontrol edebilirsin. Bu kontroller her ikili nokta için ayrı ayrı uygulanarak tüm noktaların komşuluğu kontrol edilmiş olunur.
      if(Ax == Bx && Ay == By) {
        printf("A ve B noktaları aynı\n");
      }
      else {
        if(Ax == Bx || Ax == Bx-1 || Ax == Bx+1)
          if(Ay == By || Ay == By-1 || Ay == By+1)
            printf("A ve B komşu\n");
      }
  • 25-05-2020, 12:38:16
    #3
    AhmetD adlı üyeden alıntı: mesajı görüntüle
    Aşağıdaki kodla iki noktanın komşu nokta olma durumunu kontrol edebilirsin. Bu kontroller her ikili nokta için ayrı ayrı uygulanarak tüm noktaların komşuluğu kontrol edilmiş olunur.
      if(Ax == Bx && Ay == By) {
        printf("A ve B noktaları aynı\n");
      }
      else {
        if(Ax == Bx || Ax == Bx-1 || Ax == Bx+1)
          if(Ay == By || Ay == By-1 || Ay == By+1)
            printf("A ve B komşu\n");
      }
    bu kod sadce sağ ve sol uyumunu yapıyor. Kodu yazabildim sonunda

    İlerde belki birisi gelir konuyu okursa diye ürettiğim çözüm;

    void komsuGuncelle(int e1, int e2, int e3){
    	//e1 ile e2
    	//e1 ile e3
    	//e2 ile e3 arasındaki komşuluğu kontrol etmek yeterli
    	if((e2 == e1-6 || e2 == e1-5 || e2 == e1 -4 || e2 == e1 -1 || e2 == e1 +1 || e2 == e1 +4 || e2 == e1+5 || e2 == e1+6) && (hastalar[1]== "1" || hastalar[2]=="1")){
    		//e1 ve e2 komşu
    		e1e2Komsu++;
    	}
    	
    	if((e3 == e1-6 || e3 == e1-5 || e3 == e1 -4 || e3 == e1 -1 || e3 == e1 +1 || e3 == e1 +4 || e3 == e1+5 || e3 == e1+6) && (hastalar[1]== "1" || hastalar[3]=="1")){
    		//e1 ve e3 komşu
    		e1e3Komsu++;
    	}
    	
    	if((e3 == e2-6 || e3 == e2-5 || e3 == e2 -4 || e3 == e2 -1 || e3 == e2 +1 || e3 == e2 +4 || e3 == e2+5 || e3 == e2+6) && (hastalar[2]== "1" || hastalar[3]=="1")){
    		//e2 ve e3 komşu
    		e2e3Komsu++;
    	}
    	
    	}
  • 25-05-2020, 21:32:45
    #4
    Benim gönderdiğim kod 2 boyutlu x-y eksenli konumu bilinen tüm noktaların komşuluk kontrolünü sağlıyor, açıklamada noktaların konumlarının neye göre kayıt altında olduğunu belirtmemişsiniz bu yüzden bu kod sadece sizin sorunuzu çözer genel çözüm değil, neyse çözülmesi önemli kolay gelsin.