5 Nisan 2017 Çarşamba

C Programlama Örnek Insertion Sort (Eklemeli Sıralama)

Insertion Sort (Eklemeli Sıralama) Bubble Sort algoritmasının iyileştirilmiş biçimidir. Sıralanacak dizinin ilk elemanını yerine bırakarak, sonraki elemanları (alt diziyi) sırayla alarak sıraya uygun olan yere sokar. Instertion Sort algoritması ile dizinin elemanları küçükten büyüğe sıralanır. En son ekrana dizinin yeni hali yazdırılır.
Eklemeli sıralama algoritmasının rastgele üretilmiş sayıları nasıl sıraya dizdiğini gösteren bir örnek.
#include <stdio.h>

int main()
{
  int n, dizi[100], x, y, t;

  printf("LUTFEN DIZI ELEMAN SAYISINI GIRINIZ\n");
  scanf("%d", &n);

  printf("%d ELEMANA AIT DEGERLERI GIRINIZ\n", n);

  for (x = 0; x < n; x++) {
    scanf("%d", &dizi[x]);
  }

  for (x = 1 ; x <= n - 1; x++) {
    y = x;

    while ( y > 0 && dizi[y] < dizi[y-1]) {
      t          = dizi[y];
      dizi[y]   = dizi[y-1];
      dizi[y-1] = t;

      y--;
    }
  }

  printf("ARTAN SIRAYA GORE LISTELEME:\n");

  for (x = 0; x <= n - 1; x++) {
    printf("%d\n", dizi[x]);
  }

  return 0;
}

C Programlama Örnek Selection Sort (Seçerek Sıralama)

Verinin hafızada sıralı tutulması için geliştirilen sıralama algoritmalarından  (sorting algorithms) Selection Sort (Seçerek Sıralama) algoritmasında uygulanan her adımda eldeki dizinin en küçük elemanı bulunuyor ve en başa atılıyor. Bu işlem her seferinde tekrarlanıyor. Dizinin sonuna gelindiğinde dizimiz küçükten büyüğe sıralanmış oluyor. Büyük sayıda verileri sıralamak için elverişsizdir. Bubble Sort algoritmasının iyileştirilmiş biçimi sayılır.






#include <stdio.h>

int main()
{
   int dizi[100], s, x, y, pw, t;

   printf("LUTFEN DIZI ICIN ELEMAN SAYISINI GIRINIZ\n");
   scanf("%d", &s);

   printf("%d ELEMANA AIT DEGERLERI GIRINIZ\n", s);

   for ( x = 0 ; x < s ; x++ )
      scanf("%d", &dizi[x]);

   for ( x = 0 ; x < ( s - 1 ) ; x++ )
   {
      pw = x;

      for ( y = x + 1 ; y < s ; y++ )
      {
         if ( dizi[pw] > dizi[y] )
            pw = y;
      }
      if ( pw != x )
      {
         t = dizi[x];
         dizi[x] = dizi[pw];
         dizi[pw] = t;
      }
   }

   printf("ARTAN SIRAYA GORE LISTELEME:\n");

   for ( x = 0 ; x < s ; x++ )
      printf("%d\n", dizi[x]);

   return 0;
}


C Programlama Örnek Bubble Sort (Kabarcık Sıralaması)

Verinin hafızada sıralı tutulması için geliştirilen sıralama algoritmalarından (sorting algorithms) arasında yazılması en kolay olan, ama büyük dizilerde çok yavaş kalan bir sıralama yöntemidir.

Kabarcık sıralaması'nın rastgele üretilmiş sayıları sıraladığını gösteren bir örnek
Sıralanacak dizinin üzerinde sürekli ilerlerken her defasında iki öğenin birbiriyle karşılaştırılıp, karşılaştırılan öğelerin yanlış sırada olmaları durumunda yerlerinin değiştirilmesi mantığına dayanır. Algoritma, herhangi bir değişiklik yapılmayıncaya kadar dizinin başına dönerek kendisini yineler. Adına "Kabarcık" sıralaması denmesinin nedeni büyük olan sayıların aynı suyun altındaki bir kabarcık gibi dizinin üstüne doğru ilerlemesidir. 

#include <stdio.h>

int main()
{
  int dizi[100], s, x, y, t;

  printf("LUTFEN DIZI ICIN ELEMAN SAYISINI GIRINIZ\n");
  scanf("%d", &s);

  printf("%d ELEMAN DEGERLERINI GIRINIZ\n", s);

  for (x = 0; x < s; x++)
    scanf("%d", &dizi[x]);

  for (x = 0 ; x < ( s - 1 ); x++)
  {
    for (y = 0 ; y < s - x - 1; y++)
    {
      if (dizi[y] > dizi[y+1])
      {
        t         = dizi[y];
        dizi[y]   = dizi[y+1];
        dizi[y+1] = t;
      }
    }
  }

  printf("ARTAN SIRAYA GORE LISTELEME:\n");

  for ( x = 0 ; x < s ; x++ )
     printf("%d\n", dizi[x]);

  return 0;
}

C Programlama Örnek Onluk Sistemi İkili Sisteme Dönüştürme

Kullanıcıdan alınan Decimal (Ondalık Sistem) sayıyı Binary (ikili Sisteme) dönüştüren C Programı.

#include <stdio.h>

int main()
{
  int s, x, y;

  printf("LUTFEN BIR SAYI GIRINIZ\n");
  scanf("%d", &s);

  printf("%d IKILI SAYI SISTEMINDE:\n", s);

  for (x = 50; x >= 0; x--)
  {
    y = s >> x;

    if (y & 1)
      printf("1");
    else
      printf("0");
  }

  printf("\n");

  return 0;
} 

C Programlama Örnek Armstrong Sayılar

Tüm basamaklarındaki rakamların sayı değerlerinin küpleri toplamı, kendisine eşit olan sayılara "Armstrong sayı" denir. Diğer bir deyişle her bir basamağın o sayının basamak sayısı kadar üssü alınarak toplanmasıdır. Eğer toplam bu sayıyı veriyorsa o sayı Armstrong Sayıdır.

Bazı Armstrong sayıları: 0, 1, 2, 3, 153, 370, 407, 1634, 8208

153 = 13 + 53  33
1634 = 14 + 64 + 34 + 44

#include <stdio.h>

int pw(int, int);

int main()
{
   int s, sonuc = 0, gecici, bdeger, basamak = 0;

   printf("LUTFEN BIR SAYI GIRINIZ\n");
   scanf("%d", &s);

   gecici = s;
   while (gecici != 0) {
      basamak++;
      gecici = gecici/10;
   }

   gecici = s;

   while (gecici != 0) {
      bdeger = gecici%10;
      sonuc = sonuc + pw(bdeger, basamak);
      gecici = gecici/10;
   }

   if (s == sonuc)
      printf("%d ARMSTRONG SAYIDIR.\n", s);
   else
      printf("%d ARMSTRONG SAYI DEGILDIR.\n", s);

   return 0;
}

int pw(int s, int r) {
   int c, p = 1;

   for (c = 1; c <= r; c++)
      p = p*s;

   return p;

C Programlama Örnek Palindrome Sayılar

Tersten ve düzden okunduğu zaman okunuş yönüyle aynı olan sayılara Palindromik Sayılar denir.

Örnek: 3,5,8,101,232,3663,8008,12431 vb.

Asal palindromik sayılar:  2, 3, 5, 7, 11, 101, 131, 151, 181, 191,….
Karesel palindromik sayılar: 0, 1, 4, 9, 121, 484, 676, 10201, 12321, 14641, 40804, 44944,….
Küpsel palindromik sayılar: 0, 1, 8, 343, 1331, 1030301, 1367631, 1003003001,....

#include <stdio.h>

int main()
{
   int n, t = 0, temp;

   printf("LUTFEN BIR SAYI GIRINIZ\n");
   scanf("%d",&n);

   temp = n;

   while( temp != 0 )
   {
      t = t * 10;
      t = t + temp%10;
      temp = temp/10;
   }

   if ( n == t )
      printf("%d PALINDROMIK BIR SAYIDIR\n", n);
   else
      printf("%d PALINDROMIK DEGILDIR\n", n);

   return 0;
}


1 Nisan 2017 Cumartesi

Linux SCP Komutu ve Kullanımı

SCP (Secure Copy) isimli bu güzel komut sayesinde ssh protokolü üzerinden iki Linux arasında dosya transferi yapabiliyoruz. Sadece uzak bir bilgisayardaki dosyayı yerele indirmek için değil, yereldekini de uzaktaki bilgisayara yüklemek içinde kullanabiliyorsunuz. SCP ile dilerseniz kendi sunucunuza farklı bir sunucudan dosya çekebilir, dilerseniz kendi sunucunuzdan farklı bir sunucuya dosya transfer edebilirsiniz. SCP veri aktarımı için Güvenli Kabuk (SSH) kullanması nedeniyle, transit verilerin doğruluğunu ve gizliliğini sağlar ve kimlik doğrulama için aynı mekanizmalarını kullanır. İsteğe bağlı temel nitelikleri (izinler, zaman tanımları dahil), bir sunucuya (upload) veya bir sunucudan download imkanı sağlar.

SCP Aracının Kurulumu

Linux dağıtımlarında öntanımlı olarak scp bulunmamaktadır. SCP paketi Openssh-client ile gelmektedir. SCP kurmak için:
# apt-get install openssh-client -y  (Debian/Ubuntu)
# yum install openssh-client -y      (RHEL/CentOS/Fedora/Suse) 

SCP Parametreleri
-p = Hedef port bilgisi girmek için
-q = Yüzdelik olarak gösterilen transferi disable eder. İşlem devam eder arayüzde görünmez.
-r = Klasörleri kopyalamak için kullanılır. Alt Klasörler Dahil
-c = Veri aktarımında şifreleme metodunu "-c blowfish cipher" olarak değiştirir. 
-i = Ortak anahtar kimlik doğrulaması veya özel anahtar (ssh key) dosyasını kullanmak için kullanılır.
-l = Bandwidth limitlemek için kullanılabilir. Kbit/s.
-v = Hata ayıklama iletilerini görüntüler.
-C = Sıkıştırmayı etkinleştirir.

SCP ile Sunucudan Farklı Bir Sunucuya Dosya Gönderme Nasıl?
scp -P 55 dosya.zip root@192.168.1.15:/home

SCP ile Sunucumuza Farklı Bir Sunucudan Dosya Alma Nasıl?
scp -P 55 root@192.168.1.15:/var/www/dosya.zip /home

SCP ile Uzak Sunucudan Klasör Alma Nasıl?
scp -r belgeler root@192.168.1.15:/var/www

SCP ile Çoklu Dosya Transferi Yapmak Nasıl?
scp -P 55 root@192.168.1.15:/home/\{belgeler.zip,kitaplar.tar.gz,notlar.rar\}

NOT: Varsayılanda scp ile veri aktarımı Triple-DES şifreleme metodu kullanır. Fakat daha performanslı olduğu savunulan Blowfish Cipher ile de kullanmak mümkündür. Bunun için "-c blowfish” parametresi kullanılır.

Copyright 2013-2017 | İbrahim BAYRAKTAR /dev/null Web Günlüğü