TI Sekolah Menengah Atas Program untuk menampilkan pola piramida angka terbalik, dengan inputan N (angka tertinggi

pembentuk piramida), contoh:

Masukkan angka 5 (jika diisi 5 akan membentuk piramida sbb)

Program untuk menampilkan pola piramida angka terbalik, dengan inputan N (angka tertinggi

pembentuk piramida), contoh:

Masukkan angka 5 (jika diisi 5 akan membentuk piramida sbb)

Kode Program (C++)

#include <iostream>
using namespace std;

int main() {
   // n: untuk menyimpan masukan
   // m: counter baris, untuk output spasi pada awal baris
   int n, m=1;
   cout << "Masukkan sebuah angka: ";
   cin >> n;
   cout << "Piramida terbalik yang dapat dibentuk:" << endl;
   while (n >= 0) {
       for (int i=0; i <= 2*n; i++) {
           i <= n ? cout << i : cout << 2*n-i;
           cout << " ";
       }
       cout << endl;
       // spasi di awal baris
       for (int i=0; i < m; i++) cout << "  ";
       n--; m++;
   }
   return 0;
}

Pembahasan

Pada program di atas, dideklarasikan 2 buah variabel, yaitu [tex]\tt n[/tex] dan [tex]\tt m[/tex].

  • Variabel [tex]\tt n[/tex] digunakan sebagai "counter" angka yang dicetak.
  • Variabel [tex]\tt m[/tex] digunakan sebagai "counter" baris piramida yang dicetak, dan sebagai penghitung banyak spasi yang dibutuhkan di awal baris baru.

Untuk menghasilkan piramida terbalik, program di atas menggunakan looping utama [tex]\tt while[/tex]. Kondisi dari [tex]\tt while[/tex] adalah [tex]\tt n > = 0[/tex], di mana [tex]\tt n[/tex] adalah angka masukan user. Di akhir blok looping \tt while, diperlukan dekrementasi [tex]\tt n[/tex] (dengan [tex]\tt n--[/tex]) agar nilai [tex]\tt n[/tex] berkurang 1 setiap kembali ke awal blok [tex]\tt while[/tex]. Kita juga perlu inkrementasi [tex]\tt m[/tex] (dengan [tex]\tt m++[/tex]) dalam setiap eksekusi blok [tex]\tt while[/tex].

Untuk mencetak angka [tex]\tt 0\ 1\ 2\ ...\ n\ (n-1)\ (n-2)\ ...\ 0[/tex] pada setiap baris, digunakan looping [tex]\tt for[/tex], yang melakukan pencetakan angka 0 hingga [tex]\tt n[/tex], kemudian menurun hingga 0 lagi, untuk setiap baris, dengan nilai [tex]\tt n[/tex] awal, atau nilai [tex]\tt n[/tex] yang sudah berkurang pada iterasi ke-2 dan setelahnya.

Kita dapat menggunakan 2 skema [tex]\tt for[/tex] secara sekuensial, yang pertama untuk angka menaik, dan yang kedua untuk angka menurun ketika sudah mencapai nilai [tex]\tt n[/tex]. Namun pada program ini, dijadikan 1 saja, sehingga variabel perulangannya, yaitu [tex]\tt i[/tex], perlu diinkrementasi dari 0 hingga [tex]\tt 2*n[/tex]. Di dalam [tex]\tt for[/tex], terdapat "inline" [tex]\tt if[/tex], atau [tex]\tt if[/tex] satu baris, yaitu pada baris: i <= n ? cout << i : cout << 2*n-i;
Artinya, jika [tex]\tt i[/tex] kurang dari atau sama dengan [tex]\tt n[/tex], cetak [tex]\tt i[/tex], namun jika tidak (lebih dari [tex]\tt n[/tex]), cetak angka [tex]\tt 2*n-i[/tex].

Contoh Hasil Eksekusi

Dengan masukan angka 5:
Masukkan sebuah angka: 5
Piramida terbalik yang dapat dibentuk:
0 1 2 3 4 5 4 3 2 1 0
 0 1 2 3 4 3 2 1 0
   0 1 2 3 2 1 0
     0 1 2 1 0
       0 1 0
         0

Dengan masukan angka 9:
Masukkan sebuah angka: 9
Piramida terbalik yang dapat dibentuk:
0 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 0
 0 1 2 3 4 5 6 7 8 7 6 5 4 3 2 1 0
   0 1 2 3 4 5 6 7 6 5 4 3 2 1 0
     0 1 2 3 4 5 6 5 4 3 2 1 0
       0 1 2 3 4 5 4 3 2 1 0
         0 1 2 3 4 3 2 1 0
           0 1 2 3 2 1 0
             0 1 2 1 0
               0 1 0
                 0

Dengan masukan angka 4:
Masukkan sebuah angka: 4
Piramida terbalik yang dapat dibentuk:
0 1 2 3 4 3 2 1 0
 0 1 2 3 2 1 0
   0 1 2 1 0
     0 1 0
       0

[answer.2.content]