Jidat Tsunade
#include<stdio.h>
int main(){
int x,t,a,i,j,b,c,k;
for(t=0;t<x;t++){
for(j=1;j<a-i;j++){
printf("-");
for(k=0;k<=i;k++){
if(k==0){
printf("*");
else printf("-");
for(c=1;c<=i;c++){
if(c==i){
printf("*");
printf("\n");
}
for(i=1;i<a;i++){ //fungsi untuk segitiga bawah, kebalikan diatas
for(j=1;j<i+1;j++){
printf("-");
for(k=a-i;k>0;k--){
if(k==a-i){
printf("*");
else printf("-");
for(c=a-i;c>1;c--){
if(c==2){
printf("*");
else printf("-");
printf("\n");
return 0;
}
Program ini bertujuan untuk menampilkan ke layar, bentuk segiempat dengan tinggi tertentu sesuai
yang diiputkan, contoh output :
Program :
Disimpan sebagai a.
3. Algoritma print segitiga atas (dari index 0 sampai a-1)
Penjelasan algortima :
Untuk menjelaskan algoritma kita langsung menggunakan contoh dari output.
0 1234
0
1
2
3
4
Saya tambahkan pula “grid” supaya lebih mudah dipahami. (*selalu perhatikan grid ketika
memahami algoritma)
a. Pertama dalam algoritma yang dilakukan :
Looping pertama untuk membentuk segitiga atas, dan looping kedua untuk menampilkan
“_“, kita mulai dari i=0(garis merah), dan j=1, maka program akan melakukan print “_”
sebanyak 2 kali karena nilai j=1 dan itu kurang dari a-i dimana nilai a-i adalah 2, sehingga
looping j akan menampilkan ke layar karakter ”_” sebanyak 2 kali tepatnya di kolom 0 dan
1 (garis hijau).
b. Kedua looping k akan dijalankan, karena looping j sudah selesai
Looping ini akan berjalan selama k<=i, nilai k adalah 0 sedangkan nilai i adalah 0 sehingga
memenuhi syarat dan program menampilka “*”, tepatnya di kolom ke 2 (garis hijau).
Selajutnya akan kembali ke looping i yang diatas karena kondisi percabangan dan looping
selajutnya tidak memenuhi.
Else tidak dijalakan karena if(k==0) benar, kemudian looping c tidak dijalankan karena c
tidak lebih kecil sama dengan i.
c. Lanjut ke baris berikutnya (i=1; garis merah)
Kembali ke looping i
Namun dengan nilai i=1, sekarang looping j hanya akan menampilkan ke layar karakter “_”
sekali saja, karena saat looping kedua j=2 dan nilai j=2 tidak memenuhi kondisi a-1(yang
nilainya 2). Pada gambar grid karakter ini diposisi (1,0).
d. Selanjutnya program mengeksekusi looping :
Looping k akan di lakukan 2 kali, karena k akan berjalan ketika k<=i dengan nilai i=1, maka
k akan dieksekusi 2 kali, untuk k=0 dan k=1, untuk k=0 akan ditampilkan karakter “*” dan
untuk k=1 akan ditampilkan karakter “_” apabila dalam gambar grid karakter ini berada
pada posisi (1,1) dan (1,2).
Selanjutnya looping c akan dieksekusi karena kondisi c<=1 terpenuhi dimana c=1 dan i=1,
maka looping hanya akan dilakukan sekali, karena nilai c sama dengan i (1=1) maka yang
dieksekusi adalah fungsi untuk menampilkan (“*”) sementara else tidak dijalankan.
Untuk i=2 (garis merah) cara kerjanya sama dengan baris i=1 ini. Untuk mempersingkat
kita akan langsung masuk ke algoritma segitiga bawah.
e. Fungsi segitiga bawah :
Loop i ditujukan untuk membuat baris (garis merah) dan loop j akan dieksekusi sebanyak
satu kali, karena nilai awal j adalah 1 dan ini memenuhi j<i+1(dimana i+1=2), maka
program akan menampilkan karakter “_” sebanyak satu kali (3,0).
f. Selanjutnya program akan mengeksekusi loop :
Loop ini akan diesekusi sebanyak 2 kali. Pertama nilai awal k adalah a-i=2, selanjutnya
karena 2>0 maka loop dijalankan. Sekarang nilai k==a-i maka program menampilkan
karakter “*” pada titik (3,1), selanjutnya nilai k dikurangi maka nilai k=1, maka program
menampilkan “_” titik (3,2), dan terakhir k dikurangi 1 maka nilai k=0, dan ini sudah tidak
memenuhi kondisi k>0 maka loop selesai.
g. Selanjutnya program akan mengeksekusi loop :
Loop c akan dijalankan sebanyak satu kali. Nilai awal c adalah a-i = 3-1 maka nilai awal c
adalah 2, karena 2>1 maka loop dieksekusi.
Sekarang nilai c==2, maka program menampilkan karakter “*” ke layar di titik (3,3).
Setelah itu loop selesai karena jika c di decrement nilai c akan sama dengan 1 dan tidak
memenuhi kondisi c>1.
h. Untuk baris terakhir, program akan kembali mengeksekusi loop :
Namun sekaran nilai i=2, kemudian program mengeksekusi loop j. nilai awal j=1, dimana
ini memenuhi j<i+1 dengan i+1=3, maka loop j akan dieksekusi sebanyak 2 kali, sehingga
program akan menampilkan “_” sebanyak dua kali, tepatnya di titik (4,0) dan (4,1).
Nilai awal k adalah a-i=1, maka loop ini hanya dieksekusi sekali. Nilai k sekarang sama
dengan a-1 maka program akan menampilkan ke layar, karakter “*”, tepatnya di titik (4,3).
j. Terakhir loop :
Tidak dieksekusi karena nilai awal c adalah 1 dan ini tidak memenuhi c>1, maka program
selesai.
#include<stdio.h>
if (n == 1) {
return;
}
towerOfHanoi(n-1, dari_tiang, tengah_tiang, ke_tiang);
int main(){
scanf("%d",&n);
if(n<=0) return 0;
return 0;
Output Program
Pada konsepnya program ini akan memindahkan beberapa buah piring dari tiang A ke tiang C, dengan
bantuan tiang B, namun dalam sekali langkah hanya diperkenankan memindahkan satu piringan, dan
piringan kecil selalu berada diatas piringan yang lebih besar.
Alur Program
1. Pertama program akan menerima input banyaknya piringan misal kita masukkan n=2
Sehingga program kembali memanggil fungsi towerOf Hanoi, namun kini nilainya :
Dan di layar ditampilkan : Memindahkan cakram 1 dari tiang A ke tiang B. kemudian program
return ke int main.
Namun karena masih ada nilai
#include<stdio.h>
int i,j;
printf("\n");
if(x >= 0 && x < N && y >= 0 && y < N && maze[x][y] == 1)
return 1;
return 0;
}
//fungsi maze menggunakan backtracking
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0}
};
if(solveMazeUtil(maze, 0, 0, sol) == 0) {
return 0;
printSolution(sol);
return 1;
//rekursi
sol[x][y] = 1;
return 1;
if(isSafe(maze, x, y) == 1){
sol[x][y] = 1;
return 1;
return 1;
sol[x][y] = 0;
return 0;
}
return 0;
int main(){
int maze[N][N];
int i,j;
for(j=0;j<N;j++){
scanf("%d",&maze[i][j]);
return 0;
Program Rat in Maze ini bertujuan untuk menemukan jalan bagi seekor tikus yang kita letakkan di satu
titik untuk menuju titik akhir.
*disarankan untuk melihat juga video di tautan web tersebut untuk memudahkan dalam memahami
code.
Cara yang digunakan adalah backtracking, sehingga program akan memeriksa kemungkinan tikus bisa
berjalan ke kanan, apabila tidak bisa maka program akan memeriksa apakah tikus bisa berjalan ke
bawah, apabila tikus juga tidak bisa berjalan ke bawah maka tikus akan mundur sampai tikus tersebut
dapat bergerak ke bawah.
Program
1. Program akan menerima input bentuk maze yang kita inginkan, misalnya :
2. Memanggil fungsi solveMaze dengan memparsing Maze yg sudah diinputkan, namun isi maze
dikosongkan.
3. Memanggil fungsi solveMazeUntil, selanjutnya if pertama tidak dijalankan karena kondisi yang
tidak terpenuhi
5. Masuk lagi ke fungsi solveMazeUntil untuk memasukkan nilai 1 pada array yang bersangkutan
Sehingga sekarang nilai array sol menjadi:
6. Program ini akan terus dieksekusi hingga tikus dapat mencapai titik 3,3.
Karena tracer ini tidak bisa mengeksekusi scanf maka untuk tracing program, dalam int main bisa
dilakukan perubahan seperti berikut ini :
int main(){
int maze[N][N]={
{1, 0, 0, 0},
{1, 1, 1, 0},
{0, 1, 0, 0},
{0, 1, 1, 1}
};
int i,j;
return 0;
#include<stdio.h>
#include<string.h>
int magicSquare[n][n];
memset(magicSquare, 0, sizeof(magicSquare));
int i = n/2;
int j = n-1;
int num;
j = n-2;
i = 0;
else{
if (j == n) j = 0;
if (i < 0) i=n-1;
}
if (magicSquare[i][j]){ //kondisi kedua
j -= 2;
i++;
//continue;
printf("Magic Square untuk n = %d:\nDengan total jumlah tiap baris dan kolom %d:\n\n", n,
n*(n*n+1)/2);
printf("\n");
int main() {
int n=0;
scanf("%d",&n);
return 0;
return 0;
*Program error
85. Janson yang Haus
#include<stdio.h>
int main(){
int i,j,k,n;
float m[20][20],c,x[10];
return(0);
}
Program
1. Pertama kita akan input banyaknya persamaan, dan persamaan itu sendiri.
Maka :
n=1
m[1][1]=4
m[1][2]=6
2. Selanjutnya program akan mengeksekusi loop
Loop ini dieksekusi, namun kondisi di dalamnya tidak memenuhi, sehingga kita berlanjut ke
perintah berikutnya.
3. Perintah ini untuk menampilkan ke layar, dengan menggunakan looping
86. Konversi nilai detik yang diinputkan ke jam, menit dan detik
yang sesuai
#include<stdio.h>
int main(){
int a,b,c,x,y,z,sisa;
return 0;
Program ini bertujuan untuk mengkonversi dari detik ke jam, menit, dan detik yang sesuai
Cara kerja
#include<stdio.h>
//author : Evelyn Tjitrodjojo
int main(){
int a,b,c;
scanf("%d",&a); //input angka tahun
if((a%4==0 || a%100==0) && a%400!=0){
//jika bisa dibagi 4 atau 100 dan tidak bisa dibagi 400
printf("Tahun Kabisat");
}
else //selain itu bukan tahun kabisat
printf("Bukan tahun kabisat");
return 0;
}
Program ini berfungsi untuk menentukan apakah sebuah tahun yang diinputkan merupakan tahun
kabisat atau tidak.
Cara Kerja
Logika 1 : a%4==0||a%100==0
Logika 2 : && a%400!=0
Artinya apabila salah satu nilai a%4 atau a%100 sama dengan 0 maka nilai logika pertama
akan benar, dan apabila nilai logika kedua adalah benar maka fungsi dibawah if akan
dieksekusi, sebaliknya jika salah satu logika menghasilkan logika yang bernilai salah maka
akan masuk ke fungsi else.
3. Apabila benar maka akan ditampilkan ke layar “Tahun Kabisat”
4. Sebaliknya bila nilai logika salah akan ditampilkan ke layar “Bukan Tahun Kabisat”.
88. Konversi suhu dari nilai suhu serta kode suhu yang diinputkan
(C/R/F/K) ke suhu yang setara dalam C, R, F dan K
Program ini bertujuan untuk mengkonversi suhu dari salah satu parameter ke parameter yang lain,
rumus yang digunakan adalah
1. Program menerima input suhu berupa integer dan basis suhu (c/r/f/k).
2. Jika basis suhu yang dimasukkan adalah c maka :
3. Jika basis suhu yang dimasukkan adalah r maka :
#include<stdio.h>
int main () {
int n;
else printf(".");
}
Program ini bertujuan untuk merubah nilai angka ke nilai huruf sesuai dengan batas yang telah
ditentukan.
Program
#include<stdio.h>
int main () {
while (N!=0 && N>0) { //diulang jika bilangan lebih dari nol
return 0;
Program
1. Abc