1. Kasus: Mengurutkan data pada array secara ascending (dari kecil ke besar)
Implementasi program:
/*
Nama File: sorting1.c
mengurutkan data pada array secara accending (dari kecil ke besar)
*/
#include <stdio.h>
main(){
int i, data;
int nilai[] = {75, 50, 65, 50, 20, 76, 80};
urutkan(nilai);
printf("\nData setelah diurutkan:\n");
for(i=0;i<7;i++){
printf(" %d ",nilai[i]);
}
printf("\n");
}
for(i=0;i<7;i++){
terkecil = nl[i];
posisi = i;
for(j=i+1;j<7;j++){
if(nl[j] < terkecil){
terkecil = nl[j];
posisi = j;
}
}
//pertukarkan posisi data pada array
temp = nl[i];
nl[i] = nl[posisi];
nl[posisi] = temp;
}
}
2. Kasus: Mengurutkan data pada array secara descending (dari besar ke kecil)
Implementasi program:
/*
Nama File: sorting2.c
mengurutkan data pada array secara descending (dari besar ke kecil)
*/
#include <stdio.h>
main(){
int i, data;
int nilai[] = {75, 50, 65, 50, 20, 76, 80};
urutkan(nilai);
printf("\nData setelah diurutkan:\n");
for(i=0;i<7;i++){
printf(" %d ",nilai[i]);
}
printf("\n");
}
for(i=0;i<7;i++){
terbesar = nl[i];
posisi = i;
for(j=i+1;j<7;j++){
if(nl[j] > terbesar){
terbesar = nl[j];
posisi = j;
}
}
//pertukarkan posisi data pada array
temp = nl[i];
nl[i] = nl[posisi];
nl[posisi] = temp;
}
}
#define N 5
main(){
int i;
MHS mhs[N];
entriData(mhs);
printf("\nData sebelum diurutkan:\n");
for(i=0;i<N;i++){
printf("\nMahasiswa ke-%d\n",i+1);
tampilkan(mhs, i);
}
printf("\n");
urutkan(mhs);
printf("\nData setelah diurutkan:\n");
for(i=0;i<N;i++){
printf("\nMahasiswa ke-%d\n",i+1);
tampilkan(mhs, i);
}
printf("\n");
}
void entriData(MHS myMhs[]){
char namanya[20], nimnya[5];
double ipknya;
int i;
for(i=0;i<N;i++){
terbesar = mhsku[i].ipk;
posisi = i;
for(j=i+1;j<N;j++){
if(mhsku[j].ipk > terbesar){
terbesar = mhsku[j].ipk;
posisi = j;
}
}
//pertukarkan posisi data pada array
temp = mhsku[i];
mhsku[i] = mhsku[posisi];
mhsku[posisi] = temp;
}
}
4. Kasus: Mengurutkan data hasil lomba berbasis nilai atau skor (membuat sumur)
Implementasi program:
/*
Nama File: sorting4.c
mengurutkan data hasil lomba berbasis nilai atau skor (membuat sumur)
(dari besar ke kecil)
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 4
#define PHI 3.14
//deklarasi fungsi2
void entriData(LOMBA lmb[]);
void entriLomba(LOMBA lmb[], LOMBA lom, int i);
void salin(LOMBA lmb[], LOMBA copy[]);
void tampilInfo(LOMBA lmb[]);
void urutkan(LOMBA lmb[]);
double hitVol(LOMBA lm);
main(){
//deklarasi var lokal
LOMBA lmb1[N], lmb2[N];
//entri data N peserta lomba, sekaligus hitung volume sumur
entriData(lmb1);
//salin semua data pada array ke array lain, misal lmb2[]
salin(lmb1, lmb2);
printf("\nIsi Array 1\n");
tampilInfo(lmb1);
printf("\nIsi Array 2\n");
tampilInfo(lmb2);
//urutkan data pada array lmb2
urutkan(lmb2);
//tampilkan hasil pengurutan
printf("\nHasil Pengurutan\n");
tampilInfo(lmb2);
}
printf("\nEntri Data\n");
printf("========================\n");
for(i=0;i<N;i++){
printf("Peserta ke-%d:\n", i+1);
printf("Ketikkan nama : ");
gets(lomba.psrt.nama); fflush(stdin);
printf("Ketikkan nomor: ");
gets(lomba.psrt.noPeserta); fflush(stdin);
//entri data perlombaan
printf("Ketikkan Diamater dan kedalaman sumur (pisahkan dengan spasi): ");
scanf("%lf%lf", &lomba.smr.diameter, &lomba.smr.tinggi); fflush(stdin);
lomba.smr.volume = hitVol(lomba);
entriLomba(lmb, lomba, i);
}
printf("\nEntri Data selesai... Tekan Enter...");
getch();
}
printf("\nData:\n");
printf("--------------------------------------------\n");
for(i=0;i<N;i++){
printf("\nPeserta ke-%d\n", i+1);
printf("\nNama: %s Nomor: %s\n", lmb[i].psrt.nama, lmb[i].psrt.noPeserta);
printf("Diameter : %0.2lf Meter\n", lmb[i].smr.diameter);
printf("Kedalaman: %0.2lf Meter\n", lmb[i].smr.tinggi);
printf("Volume : %0.2lf Meter Kubik\n", lmb[i].smr.volume);
printf("--------------------------------------------\n");
}
}
for(i=0;i<N;i++){
terbesar = lmb[i].smr.volume;
posisi = i;
for(j=i+1;j<N;j++){
if(lmb[j].smr.volume > terbesar){
terbesar = lmb[j].smr.volume;
posisi = j;
}
}
//pertukarkan isi array
temp = lmb[i];
lmb[i] = lmb[posisi];
lmb[posisi] = temp;
}
}
5. Kasus: Mengelola data lomba membuat sumur untuk N orang peserta dan menentukan juara
1, 2 dan 3 serta dilengkapi dengan menu pilihan.
Implementasi program:
/*
Nama File: sorting5.c
mengelola data lomba membuat sumur untuk N peserta dan
menentukan juara 1, 2 dan 3, menggunakan menu
(dari besar ke kecil)
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 4
#define PHI 3.14
//deklarasi fungsi2
void judul();
void entriData(LOMBA lmb[]);
void entriLomba(LOMBA lmb[], LOMBA lom, int i);
void salin(LOMBA lmb[], LOMBA copy[]);
void tampilInfo(LOMBA lmb[]);
void urutkan(LOMBA lmb[]);
double hitVol(LOMBA lm);
void juara(LOMBA lmb[]);
void tampilkan(LOMBA lmb[], int i);
void menu(LOMBA lom1[], LOMBA lom2[]);
void cariData(LOMBA lmb[], int *pss, int *stat);
main(){
//deklarasi var lokal
LOMBA lmb1[N], lmb2[N];
void judul(){
printf("PROGRAM PENGELOLAAN HASIL LOMBA MEMBUAT SUMUR\n");
printf("=============================================\n");
printf("Programmer: Antu\n");
//dst
}
do{
printf("\nMENU PILIHAN\n");
printf("=========================\n");
printf("1. Cari Data Tertentu\n");
printf("2. Tampilkan Para Juara\n");
printf("3. Lihat Informasi\n");
printf("0. Selesai\n");
printf("=========================\n");
printf("Ketikkan nomor pilihan (1, 2, 3 atau 0): ");
scanf("%d", &pilihan); fflush(stdin);
switch(pilihan){
case 0: printf("\nBye...bye...\n");
exit(1);
case 1: cariData(lom1, &posisi, &stat);
if(stat){
printf("\nData yg ditemukan:\n");
tampilkan(lom1, posisi);
}
break;
case 2: juara(lom2); break;
case 3: tampilInfo(lom1); break;
default: printf("\nNomor pilihan tidak ada... Tekan Enter");
getch();
}
printf("\nMau ngulang lagi (Y/T): ");
jawab = getche();
} while(toupper(jawab)=='Y');
printf("\nTerima kasih.... Tekan Enter...");
getch();
}
printf("\nEntri Data\n");
printf("========================\n");
for(i=0;i<N;i++){
printf("Peserta ke-%d:\n", i+1);
printf("Ketikkan nama : ");
gets(lomba.psrt.nama); fflush(stdin);
printf("Ketikkan nomor: ");
gets(lomba.psrt.noPeserta); fflush(stdin);
//entri data perlombaan
printf("Ketikkan Diamater dan kedalaman sumur (pisahkan dengan spasi): ");
scanf("%lf%lf", &lomba.smr.diameter, &lomba.smr.tinggi); fflush(stdin);
lomba.smr.volume = hitVol(lomba);
entriLomba(lmb, lomba, i);
}
printf("\nEntri Data selesai... Tekan Enter...");
getch();
}
printf("\nData:\n");
printf("--------------------------------------------\n");
for(i=0;i<N;i++){
printf("\nPeserta ke-%d\n", i+1);
printf("\nNama: %s Nomor: %s\n", lmb[i].psrt.nama, lmb[i].psrt.noPeserta);
printf("Diameter : %0.2lf Meter\n", lmb[i].smr.diameter);
printf("Kedalaman: %0.2lf Meter\n", lmb[i].smr.tinggi);
printf("Volume : %0.2lf Meter Kubik\n", lmb[i].smr.volume);
printf("--------------------------------------------\n");
}
}
for(i=0;i<N;i++){
terbesar = lmb[i].smr.volume;
posisi = i;
for(j=i+1;j<N;j++){
if(lmb[j].smr.volume > terbesar){
terbesar = lmb[j].smr.volume;
posisi = j;
}
}
//pertukarkan isi array
temp = lmb[i];
lmb[i] = lmb[posisi];
lmb[posisi] = temp;
}
}
printf("\nPARA JUARA\n");
printf("--------------------------\n");
for(i=0;i<3;i++){
printf("\nJuara ke-%d\n", i+1);
tampilkan(lmb, i);
}
printf("\nTekan Enter...");
getch();
}
6. Kasus: Pengelolaan data lomba membuta sumur untuk N orang peserta dan menentukan
juara 1, 2 dan 3 serta 3 peserta terburuk.Lengkapi dengan menu pilihan.
Implementasi program:
/*
Nama File: sorting6.c
mengelola data lomba membuat sumur untuk N peserta dan
menentukan juara 1, 2 dan 3, seta informasi 3 peserta terburuk
menggunakan menu
(dari besar ke kecil)
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 4
#define PHI 3.14
//deklarasi fungsi2
void judul();
void entriData(LOMBA lmb[]);
void entriLomba(LOMBA lmb[], LOMBA lom, int i);
void salin(LOMBA lmb[], LOMBA copy[]);
void tampilInfo(LOMBA lmb[]);
void urutkan(LOMBA lmb[]);
double hitVol(LOMBA lm);
void juara(LOMBA lmb[]);
void pecundang(LOMBA lmb[]);
void tampilkan(LOMBA lmb[], int i);
void menu(LOMBA lom1[], LOMBA lom2[]);
void cariData(LOMBA lmb[], int *pss, int *stat);
main(){
//deklarasi var lokal
LOMBA lmb1[N], lmb2[N];
void judul(){
printf("PROGRAM PENGELOLAAN HASIL LOMBA MEMBUAT SUMUR\n");
printf("=============================================\n");
printf("Programmer: Antu\n");
//dst
}
do{
printf("\nMENU PILIHAN\n");
printf("=========================\n");
printf("1. Cari Data Tertentu\n");
printf("2. Tampilkan Para Juara\n");
printf("3. Tampilkan Para Pecundang\n");
printf("4. Lihat Informasi\n");
printf("0. Selesai\n");
printf("=========================\n");
printf("Ketikkan nomor pilihan (1, 2, 3, 4 atau 0): ");
scanf("%d", &pilihan); fflush(stdin);
switch(pilihan){
case 0: printf("\nBye...bye...\n");
exit(1);
case 1: cariData(lom1, &posisi, &stat);
if(stat){
printf("\nData yg ditemukan:\n");
tampilkan(lom1, posisi);
}
break;
case 2: juara(lom2); break;
case 3: pecundang(lom2); break;
case 4: tampilInfo(lom1); break;
default: printf("\nNomor pilihan tidak ada... Tekan Enter");
getch();
}
printf("\nMau ngulang lagi (Y/T): ");
jawab = getche();
} while(toupper(jawab)=='Y');
printf("\nTerima kasih.... Tekan Enter...");
getch();
}
printf("\nEntri Data\n");
printf("========================\n");
for(i=0;i<N;i++){
printf("Peserta ke-%d:\n", i+1);
printf("Ketikkan nama : ");
gets(lomba.psrt.nama); fflush(stdin);
printf("Ketikkan nomor: ");
gets(lomba.psrt.noPeserta); fflush(stdin);
//entri data perlombaan
printf("Ketikkan Diamater dan kedalaman sumur (pisahkan dengan spasi): ");
scanf("%lf%lf", &lomba.smr.diameter, &lomba.smr.tinggi); fflush(stdin);
lomba.smr.volume = hitVol(lomba);
entriLomba(lmb, lomba, i);
}
printf("\nEntri Data selesai... Tekan Enter...");
getch();
}
printf("\nData:\n");
printf("--------------------------------------------\n");
for(i=0;i<N;i++){
printf("\nPeserta ke-%d\n", i+1);
printf("\nNama: %s Nomor: %s\n", lmb[i].psrt.nama, lmb[i].psrt.noPeserta);
printf("Diameter : %0.2lf Meter\n", lmb[i].smr.diameter);
printf("Kedalaman: %0.2lf Meter\n", lmb[i].smr.tinggi);
printf("Volume : %0.2lf Meter Kubik\n", lmb[i].smr.volume);
printf("--------------------------------------------\n");
}
}
for(i=0;i<N-1;i++){
terbesar = lmb[i].smr.volume;
posisi = i;
for(j=i+1;j<N;j++){
if(lmb[j].smr.volume > terbesar){
terbesar = lmb[j].smr.volume;
posisi = j;
}
}
//pertukarkan isi array
temp = lmb[i];
lmb[i] = lmb[posisi];
lmb[posisi] = temp;
}
}
printf("\nPARA PECUNDANG\n");
printf("--------------------------\n");
for(i=N-1;i>=N-3;i--){
printf("\nPecundang ke-%d\n", j);
tampilkan(lmb, i);
j++;
}
printf("\nTekan Enter...");
getch();
}
Tugas: lakukan modifikasi unruk setiap contoh, sesuai creativitas anda, misalnya data dari
domain atau permasalahan lain,