Segitiga dalam Segitiga

Kali ini kita akan membuat program untuk menampilkan segitiga yang di dalamnya terdapat segitiga yang lebih kecil.

Pertama kita akan membuat program yang menampilkan segitiga seperti dibawah ini.

#include <stdio.h>
#include <math.h>

int polasegitiga(int n){
    for(int i=1;i<;=n;i++){
        for(int j=n;j>1;j--){
            if(j<;=i)printf("*");
            else printf(" ");
        }
        printf("\n");
     }

     return 0;
}

int main(){
     polasegitiga(5);
     return 0;
}
Output :
   *
  **
 ***
****

Kemudian kita gabungkan “perulangan paling dalam” dari contoh kode pertama dengan "kebalikannya" sehingga menjadi seperti dibawah ini.

#include <stdio.h>
#include <math.h>

int polasegitiga(int n){
int i, j;
     i=1;
     while(i<=n){
         j=n;
         while(j>1){
             if(j<=i)printf("*");
             else printf(" ");
             j--;
         }

         j=1;

         while(j<=i){
             printf("*");
             j++;
         }

         printf("\n");
         i++;
     }
     return 0;
}

int main(){
     polasegitiga(10);
     return 0;
}
Output :
         *
        ***
       *****
      *******
     *********
    ***********
   *************
  ***************
 *****************
*******************

Mari kita “lubangi” segitiganya dan kita ubah parameter fungsi pola segitiga menjadi 11, sehingga tampak seperti di bawah ini.

#include <stdio.h>
#include <math.h>

int polasegitiga(int n){
int i, j, tengah;
    i=1;

    tengah=(n+1)/2; 
    while(i<=n){
        j=n;
        while(j>1){ 
            if(j==i || i==n || (i==tengah && j<i))printf("*"); 
            else printf(" "); 
            j--;
        }
        j=1;
        while(j<=i){
            if(j==i || i==n || (i==tengah && j<i))printf("*");
            else printf(" ");
            j++;
        }
        printf("\n");
        i++;
    }
    return 0;
}

int main(){
     polasegitiga(11);
     return 0;
}
Output :
          *
         * *
        *   *
       *     *
      *       *
     ***********
    *           *
   *             *
  *               *
 *                 *
*********************

Mari kita bentuk segitiga agar sesuai keinginan kita, yaitu segitiga dalam segitiga. Supaya hasil sesuai keinginan parameter fungsi polasegitiga atau “nilai n” harus ganjil.

#include <stdio.h>
#include <math.h>

int polasegitiga(int n){
int i, j, tengah, silang; 
    i=1;
    tengah=(n+1)/2; 
    while(i<=n){
         silang=n+1-i;
         j=n;
         while(j>1){
             if(j==i || i==n || (i==tengah && j<i))printf("*");
             else if (j==silang&&(i>tengah)) printf("*");
             else printf(" ");
             j--;
         }

         j=1;

         while(j<=i){
             if(j==i || i==n || (i==tengah && j<i))printf("*");
             else if (j==silang&&(i>tengah)) printf("*");
             else printf(" ");
             j++;
         }

         printf("\n");
         i++; 
    } 

    return 0; 
}

int main(){
    polasegitiga(11); 
    return 0;
}
Output :
          *
         * *
        *   *
       *     *
      *       *
     ***********
    * *       * *
   *   *     *   *
  *     *   *     *
 *       * *       *
*********************

Selanjutnya, kalian bisa menambahkan scanf atau cin plus percabangan untuk mengubah nilai variabel n yang digunakan sebagai ukuran segitiga tersebut. Untuk yang itu, kalian seharusnya bisa mencobanya sendiri kalau kalian sudah bisa bahasa C atau C++. Ingat, nilai n-nya harus ganjil!