Program untuk menampilkan pola piramida angka terbalik, dengan inputan N

Berikut ini adalah pertanyaan dari naufalwiatra pada mata pelajaran TI untuk jenjang Sekolah Menengah Atas

Program untuk menampilkan pola piramida angka terbalik, dengan inputan N (angka tertinggipembentuk piramida), contoh:

Masukkan angka 5 (jika diisi 5 akan membentuk piramida sbb)
Program untuk menampilkan pola piramida angka terbalik, dengan inputan N (angka tertinggipembentuk piramida), contoh:Masukkan angka 5 (jika diisi 5 akan membentuk piramida sbb)

Jawaban dan Penjelasan

Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.

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 \tt ndan\tt m.

  • Variabel \tt ndigunakan sebagai"counter" angka yang dicetak.
  • Variabel \tt mdigunakan 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 \tt while. Kondisi dari \tt whileadalah\tt n > = 0, di mana \tt n adalah angka masukan user. Di akhir blok looping \tt while, diperlukan dekrementasi \tt n (dengan \tt n--) agar nilai \tt nberkurang 1 setiap kembali ke awal blok\tt while. Kita juga perlu inkrementasi \tt m (dengan \tt m++) dalam setiap eksekusi blok \tt while.

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

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

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

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 << 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 << 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 <<

Semoga dengan pertanyaan yang sudah terjawab oleh henriyulianto dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.

Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact

Last Update: Wed, 12 Oct 22