21 Kasım 2017 Salı

C sharp verilen bir dizide N den fazla tekrarlanan elemanı silme







Liste lst ve sayı N verildiğinde, her lst sayısını en çok N defa içeren, yeniden sıralama yapmadan yeni bir liste oluşturun. Örneğin, N = 2 ve giriş [1,2,3,1,2,1,2,3] ise, [1,2,3,1,2] 'yi alırsınız, bir sonraki [1,2 ], sonuçta 1 ve 2 sonuçta 3 kez olduğundan listeye eklenmez. Ardından 3 2. kez gelir ve dizinin son durumu [1,2,3,1,2,3] olur

Örnek fonksiyon aşağıdaki gibidir:


        public static int[] DeleteNthItem(int[] arr, int x)
        {
            List result = new List();
            for (int i = 0; i < arr.Length; i++)
            {
                if (result.Count(s => s.Equals(arr[i])) < x)
                    result.Add(arr[i]);
            }
            return result.ToArray();
        }


veya


        public static int[] DeleteNth(int[] arr, int x)
        {
            var result = new List();
            foreach (var item in arr)
            {
                if (result.Count(i => i == item) < x)
                    result.Add(item);
            }
            return result.ToArray();
        }





Verilen bir dizinin sol ve sağ tarafının toplamı eşit olan indeksini bulma





Bir dizi tam sayı verilecektir. Göreviniz bu diziyi alıp N'nin solundaki tamsayıların toplamının N sağındaki tam sayıların toplamına eşit olduğu bir dizinin N indeksini bulmanızdır. Bunun gerçekleşmesini sağlayacak bir dizi verilmemişse fonksiyonumuz -1 dönecek.

Örneğin:

Diyelim ki {1,2,3,4,3,2,1} dizisi verildi:
Dizinin 3. konumunda indeksin sol tarafının toplamı ({1,2,3}) ve indeksin sağ tarafının toplamı ({3,2, 1}) ikisi de eşittir 6. Bu durumda fonksiyon dizinin indeksi olarak 3 döndürür.

Başka birine bakalım.
Size {1,100,50, -51,1,1} dizisi verildi:
Dizinin 1. konumunda, dizinin sol tarafının toplamı ({1}) ve dizinin sağ tarafının toplamı ({50, -51,1,1}) toplamı 1 dir. Her iki tarafın toplamı 1 dir. Bu durumda fonksiyon dizinin indeksi olarak 1 döndürür.

Örnek fonksiyon aşağıdaki gibidir:


       
        public static int FindEvenIndex(int[] arr)
        {
            int left = 0,right = 0;
            for (int i = 0; i < arr.Length; i++)
            {
                right = 0;
                for (int j = i+1; j < arr.Length; j++)
                {
                    right += arr[j];
                }
                if (left == right)
                    return i;
                else left += arr[i];
            }

            return -1;
        }



1 Kasım 2017 Çarşamba

C Sharp Uygulamalar Resmi Parçalara Bölme - Resmi Parçalara Bölme Programı



KONU : C Sharp Uygulamalar - C Sharp ( C# ) Form Uygulamalar bir resmi küçük parçalara bölme, bitmap grafik nesnesini daha küçük parçalara bölme, c sharp uygulamalar resmi parçalara bölme, c# uygulamalar resmi parçalara bölme, c sharp uygulamaları grafik nesnesini kullanarak resmi parçalara bölme, c sharp uygulamalar resmi parçalara ayırma örnekler.




UYGULAMAYI İNDİR
 




//parçaları ayırdığımız resimlerin her parçasını image olarak bir generic list içinde saklayalım

List< image > parcaResimler = new List< image >();

Bitmap resim;

Graphics gr = null;

Image alinanResim = Image.FromFile(@"C:\alinan.jpg");


// Bölmek istediğimiz resmi kaç sütuna ayıracağımızı girelim

int sutunSayisi = 2;


//Bölmek istediğimiz resmi kaç satıra ayırcağımızı girelim

int satirSayisi = 5;

int x = 0;

int y = 0;


// for döngüsünü kullanarak resmi parçalara ayırmaya başlayalım


for (int i = 0; i < satirSayisi; i++)
{

    for (int k = 0; k < sutunSayisi; k++)
    {

        Rectangle seçili_alan = new Rectangle(x, y, alinanResim.Width / sutunSayisi, alinanResim.Height / satirSayisi);

        //Seçili alan büyüklüğünde bir Bitmap oluştur

        resim = new Bitmap(seçili_alan.Width, seçili_alan.Height);

        //Bu Bitmap için grafik nesnesi oluştur

        gr = Graphics.FromImage(resim);

        //Picture Box içindeki resmi yeni resmin 0,0 noktasına çiz

        gr.DrawImage(alinanResim, 0, 0, seçili_alan, GraphicsUnit.Pixel);

        //Yeni resmi parcaResimler içine image olarak kaydet

        parcaResimler.Add(resim);

        x += alinanResim.Width / sutunSayisi;

    }

    y += alinanResim.Height / satirSayisi;

    x = 0;
}

//grafik nesnesini sonlandır

gr.Dispose();


 

UYGULAMAYI İNDİR