18 Ocak 2018 Perşembe

C - Ekrana Elmas (Diamond) Şekli Çıkartan Program


Ekrana belli şekiller çıkartmak C dilinde oldukça ilgi çekici bir işlemdir. Bu program ile num (tek tam sayı olması gerekir) değişkenine göre elmas şeklinin köşegen karakter sayısını belirlemiş oluyoruz. Programı derleyip çalıştırdığımızda ise ortaya güzel bir elmas şekli çıkıyor.



Program kodlarına ayrıca github sayfasından da ulaşabilirsiniz.


Program Kodları ve Açıklamaları:

#include <stdio.h>
#include <stdlib.h> // abs() fonksiyonu için

int main() {

  // Kaça kaçlık bir elmas yazdıracağını belirtmek
  // için num değişkenini kullanıyoruz. Tek olmak zorunda.
  // numF değişkeni num değişkenine göre sayoları -(num-1)/2 ile
  // (num-1)/2 arasında belirlemek için kullanılacak.
  int num = 31, numF = (1-num)/2;

  // İç içe iki for döngüsü ile ekrana elmas bastırılır.

  /*
      Örneğin num değeri 5 ise numF değeri -2 olur. Bu değeride
    biz i ve j'nin başlangıç değeri olarak kullanacağız.
    +-------+-------+-------+------+------+------+
    |       | i(-2) | i(-1) | i(0) | i(1) | i(2) |
    +-------+-------+-------+------+------+------+
    | j(-2) |       |       |   *  |      |      |
    +-------+-------+-------+------+------+------+
    | j(-1) |       |   *   |   *  |   *  |      |
    +-------+-------+-------+------+------+------+
    |  j(0) |   *   |   *   |   *  |   *  |   *  |
    +-------+-------+-------+------+------+------+
    |  j(1) |       |   *   |   *  |   *  |      |
    +-------+-------+-------+------+------+------+
    |  j(2) |       |       |   *  |      |      |
    +-------+-------+-------+------+------+------+
    Yukarıda gözüken boş hücrelere bir göz atalım;
    i(-2)j(-2), i(-1)j(-2) ve i(-2)j(-1) sol üst köşedeki boş
    hücrelerdir. Bu hücrelerin i ve j değerlerinin toplamının
    mutlak değerini aldığımız zaman maximum 4 olacağını görürüz.
    Aynı şekilde sağ alttaki hücrelerin i ve j lerinin toplamı
    maximum 4 olduğunu görürüz. Bu durumda ilk koşulumuz |i+j| > 3
    ise ekrana boşluk karakterini yazdırsın. Sağ üst ve sol alt
    hücrelerin ise bu koşulun |i-j| > 3 olmasını bekleriz. Bu durumda
    her iki koşuluda sağlayan durumlarda ekrada boşluk, diğer
    durumlarda ise yıldız karakterini yazdırırsak ekrana elmas
    şeklini basmış oluruz...
  */

  for (int i = numF; i <= -1*numF; i++) {
    for (int j = numF; j <= -1*numF; j++) {
      // abs() ile (i+j) ve (i-j) nin mutlak değerini alıyoruz.
      if (abs(i+j) > (num-1)/2 || abs(i-j) > (num-1)/2) {
        // Ekrana boşluk yazdırılır.
        printf(" ");
      }else{
        // Ekrana * yazdırılır.
        printf("*");
      }
    }
    // Bir alt satıra geçilir.
    printf("\n");
  }

  return 0;
}

Hiç yorum yok:

Yorum Gönder