Ada suatu model
permasalahan dalam logika pemrograman bagi pemula seperti yang diperlihatkan
pada gambar berikut ini :
Bagaimana penyelesaiannya ?
- Untuk penyelesaian logika program membangun bentuk seperti pada gambar 1 di atas, kita harus melakukan permodelan. Kita mengacu pada baris saja, setiap baris akan merepresentasikan apakah karakter atau angka dicetak atau tidak. Misal, baris ke-1 dicetak hanya 1 angka saja. Baris ke-2 dicetak hanya 2 angka saja, begitu juga seterusnya hingga n baris. Sehingga dapat dibuat suatu logika bahwa jika kolom lebih besar dari baris ke-i maka cetak karakter spasi dan jika tidak maka cetak angka (angka tersebut bertambah satu untuk setiap iterasinya)
- Untuk penyelesaian logika program membangun bentuk seperti pada gambar 2 di atas, kita harus melakukan suatu permodelan. Misal, gambar di atas terdiri dari nxn baris dan kolom. Disitu terlihat bahwa nilai n=5 sehingga jumlah baris sebanyak 5 dan jumlah kolom sebanyak 5 pula. Kita harus tahu pola dari angka-angka tersebut. Logika dimulai dari baris ke-1 kemudian kolom ke-j sampai n. Dilanjut lagi dari baris ke-2 kemudian kolom ke-j sampai n. Begitu seterusnya hingga baris ke-n. Berikut ini pola yang terbentuk :
- Baris ke-1 1 +9 10 +1 11 +9 20 +1 21
- Baris ke-2 2 +7 9 +3 12 +7 19 +3 22
- Baris ke-3 3 +5 8 +5 13 +5 18 +5 23
Jika kita
perhatikan, setiap kolom ganjil dan genap membentuk suatu pola. Pada kolom
ke-1, disesuaikan saja dengan baris ke-i. Namun, pada kolom ganjil berikutnya
didapat suatu rumus angka pada kolom sebelumnya + (2 x baris ke-i). Misal,
pengisian pada baris ke-2 kolom ke-3. Angka pada kolom sebelumnya yaitu 9 + (2
x 2) = 13. Pada kolom genap didapat suatu rumus angka pada kolom sebelumnya +
(jumlah baris x 2 - baris ke-i-1)-baris ke-i. Misal, pada kolom ke-4 baris
ke-2. Angka pada kolom sebelumnya yaitu 12 + (5 x 2 - 1)-2 = 19.
Source Code Program
1. Program 1
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n=5, bil=1;
int i,j;
for (i=0; i < n; i++) {
for (j=0; j < n; j++) {
if (j > i) {
printf("%-3s"," ");
}
else {
printf("%-3d",bil);
bil=bil+1;
}
}
printf("\n");
}
return 0;
}
#include <stdlib.h>
int main()
{
int n=5, bil=1;
int i,j;
for (i=0; i < n; i++) {
for (j=0; j < n; j++) {
if (j > i) {
printf("%-3s"," ");
}
else {
printf("%-3d",bil);
bil=bil+1;
}
}
printf("\n");
}
return 0;
}
2. Program 2
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n=5, bil=0;
int i,j;
//baris
for (i=0; i < n; i++) {
//kolom
for (j=0; j < n; j++) {
//jika kolom genap
if ((j+1)%2 == 0) {
bil=bil+(n*2-i)-(i+1);
printf("%-3d",bil);
}
//jika kolom ganjil
else {
//jika kolom pertama
if (j==0) {
bil=bil+(i+1);
printf("%-3d",bil);
}
else {
bil=bil+(2*i+1);
printf("%-3d",bil);
}
}
}
bil=0;
printf("\n");
}
return 0;
}
int main()
{
int n=5, bil=0;
int i,j;
//baris
for (i=0; i < n; i++) {
//kolom
for (j=0; j < n; j++) {
//jika kolom genap
if ((j+1)%2 == 0) {
bil=bil+(n*2-i)-(i+1);
printf("%-3d",bil);
}
//jika kolom ganjil
else {
//jika kolom pertama
if (j==0) {
bil=bil+(i+1);
printf("%-3d",bil);
}
else {
bil=bil+(2*i+1);
printf("%-3d",bil);
}
}
}
bil=0;
printf("\n");
}
return 0;
}
sumber:http://ptik-rizalyugo.blogspot.com/2012/01/ada-suatu-model-permasalahan-dalam.html
0 comments:
Posting Komentar