Anda di halaman 1dari 14

SORTING

TUGAS 3

Disusun oleh:
Nama : DEDEN FARHAN

NPM : 0618104038

JURUSAN TEKNIK INFORMATIKA

FAKULTAS TEKNIK UNIVERSITAS WIDYATAMA

BANDUNG

2018
Tugas Pendahuluan III
1. Diketahui suatu data tiket sbb.

Id_tiket Jurusan Harga


T001 Bandung-Jakarta 85000
T002 Bandung-Bekasi 50000
T003 Jakarta-Surabaya 150000
Buatlah program bahasa C menggunakan 3 pilihan menu

1. Isi Data, menu untuk memasukkan data di atas ke dalam struktur tiket
2. Menampilkan data tiket terurut menaik berdasar harga(Gunakan bubble sort)
3. Keluar Program

Solusi:

#include<stdio.h>
#include<string.h>

int NoMenu;
typedef struct {
char id_tiket[100];
char jurusan[100];
int harga; } tiket;
int jml, i;
tiket T[100];

void VInputData();
void VbSortData(tiket T[100], int count);

int main() {
printf("===== Menu =====\n");
printf("1. Isi Data\n");
printf("2. bSortDesc Harga\n");

DEDEN FARHAN | 0618104038 Halaman 1


printf("3. Keluar Program\n");
printf("===== ==== =====\n");
do{
printf("Pilihan Menu : "); scanf("%d", &NoMenu);
switch(NoMenu){
case 1 : VInputData(); break;
case 2 : VbSortData(T, jml); break;
case 3 : printf("Keluar Program ...");break;
default : printf("Inputan tidak valid!\n");
}
}while(NoMenu!=3);
return 0;
}

void VInputData(){
int i, j;
i = 0; j=0;
printf("Masukkan berapa data : "); scanf("%d", &jml);
for(int i=0; i<jml; i++){
printf("Masukkan Id : "); scanf("%s", &T[i].id_tiket);
printf("Masukkan Jurusan : "); scanf("%s", &T[i].jurusan);
printf("Masukkan Harga : "); scanf("%d", &T[i].harga);
}
}

void VbSortData(tiket T[100], int count){


int swap, i;
tiket temp;
do{
swap = 0;
for(i=0; i<(count-1); i++){
if(T[i].harga < T[i+1].harga){
temp = T[i];

DEDEN FARHAN | 0618104038 Halaman 2


T[i] = T[i+1];
T[i+1] = temp;
swap = 1;
}
}
}while(swap==1);

for(i=0; i<count; i++){


printf("Id : %s\n", T[i].id_tiket);
printf("Jurusan : %s\n", T[i].jurusan);
printf("Harga : %d\n", T[i].harga);
}
}

2. Buatlah program pengurutan elemen array yang diinput oleh user sebanyak n
buah menggunankan :
a. Selection sort(pilih minimum atau maksimum sort)
b. Insertion sort
Solusi:

DEDEN FARHAN | 0618104038 Halaman 3


#include<stdio.h>

int NoMenu;
int jml;
int arr[100];
void VInputData();
void VsSortData(int arr[100], int jml);
void ViSortData(int arr[100], int jml);

int main() {
printf("===== Menu =====\n");
printf("1. Input Array\n");
printf("2. Selection Sort\n");
printf("3. Insertion Sort\n");
printf("4. Keluar Program\n");
printf("===== ==== =====\n");
do{
printf("Pilihan Menu : "); scanf("%d", &NoMenu);
switch(NoMenu){
case 1 : VInputData(); break;
case 2 : VsSortData(arr, jml); break;
case 3 : ViSortData(arr, jml); break;
case 4 : printf("Keluar Program ...");break;
default : printf("Inputan tidak valid!\n");
}
}while(NoMenu!=4);
return 0;
}

void VInputData(){
int i;
printf("Masukkan berapa data : "); scanf("%d", &jml);
for(i=0; i<jml; i++){

DEDEN FARHAN | 0618104038 Halaman 4


printf("Masukkan Nilai Data ke-%d : ", i+1); scanf("%d", &arr[i]);
}
}

void VsSortData(int arr[100], int jml){


int temp, j, i;
for(i=0; i<jml; i++){
for(j=i+1; j<jml; j++){
if(arr[i]>arr[j]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;

}
}
}
printf("Selection sort asc\n");
for(i=0; i<jml; i++){
printf("%d\n", arr[i]);
}
for(i=0; i<jml; i++){
for(j=i+1; j<jml; j++){
if(arr[i]<arr[j]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;

}
}
}
printf("Selection sort desc\n");
for(i=0; i<jml; i++){
printf("%d\n", arr[i]);

DEDEN FARHAN | 0618104038 Halaman 5


}

}
void ViSortData(int arr[100], int jml){
int i, j, nilai;
for(i=0; i<jml; i++){
nilai = arr[i];
j = i-1;
while((j>=0)&&(arr[j]>nilai)){
arr[j+1]=arr[j];
j = j-1;
}
arr[j+1] = nilai;
}
printf("Insertion sort desc\n");
for(i=0; i<jml; i++){
printf("%d\n", arr[i]);
}
}

DEDEN FARHAN | 0618104038 Halaman 6


DEDEN FARHAN | 0618104038 Halaman 7
Latihan-latihan Praktikum II

2. [TIPE-A]
Diketahui sebuah tiket kereta api sebagai berikut :
Kode Asal Tujuan Harga
1 Bandung Jakarta 100.000
2 Jakarta Bandung 100.000
3 Bandung Surabaya 300.000
4 Surabaya Bandung 300.000
Jika calon penumpang membeli tiket lebih dari 2, maka berhak mendapat
diskon sebesar 5% dari total pembelian. Buatlah program dengan bahasa C
untuk memasukkan data rekap penjualan tiket dengan
struktur : nama_pemesan, Jurusan, dan total penjualan menggunakan array
berdasarkan inputan : nama_pemesan, kode_jurusan, dan jumlah_tiket.
Kemudian tampilkan seluruh data struktur rekap penjualan tiket secara
terurut dari total penjualan yang terbesar sampai terkecil(gunakan selection sort
maksimum)

Solusi:

#include <stdio.h>
#include<string.h>
char jurusan[4][100]={"Bandung-Jakarta", "Jakarta-Bandung", "Bandung-
Surabaya", "Surabaya-Bandung"};
long harga[4]={100000, 100000, 300000, 300000};
typedef struct {
char nama[255];
int kode, jml, byr; } pesan;
pesan p[100];
int count, i;
void VInputData(int *count);
void ViSortData(pesan p[100], int count);
int main() {
VInputData(&count);

DEDEN FARHAN | 0618104038 Halaman 8


ViSortData(p, count);
}

void VInputData(int *count){


int byr;
char lanjut;
i=0;
do{
printf("Nama Pemesan : "); scanf("%s", &p[i].nama);
printf("Kode Transportasi : "); scanf("%d", &p[i].kode);
printf("Jumlah : "); scanf("%d", &p[i].jml);
byr = harga[p[i].kode-1]*p[i].jml;
if(p[i].jml > 2){
byr = byr - (byr*0.05);
}
p[i].byr = byr;
printf("Data Berhasil Input !Tambahlagi(Y/N) ? "); scanf("%s", &lanjut);
i=i+1;
}while((lanjut== 'y') || (lanjut== 'Y'));
*count = i;
}

void ViSortData(pesan p[100], int count){


pesan nilai;
int j;
for(i=0; i<count; i++){
nilai = p[i];
j = i-1;
while((j>=0)&&(p[j].byr<nilai.byr)){
p[j+1]=p[j];
j = j-1;
}
p[j+1] = nilai;

DEDEN FARHAN | 0618104038 Halaman 9


}
for(i=0; i<count; i++){
printf("%d\n", i+1);
printf("Nama Pemesan : %s \n", p[i].nama);
printf("Jurusan : %s\n", jurusan[p[i].kode-1]);
printf("Total Penjualan : %d\n", p[i].byr); }
}

4. [TIPE-B]
Diketahui sebuah himpunan nilai Array A={24, 34, 21, 65, 22, 12, 24}. Buatlah
program pencarian nilai X yang diinput oleh user menggunakan Binary Search.
Solusi:

#include<stdio.h>

int NoMenu;
int jml;
int arr[100];
void VInputData();
void VbSortDataAsc(int arr[100], int jml);

DEDEN FARHAN | 0618104038 Halaman 10


void VbSortDataDesc(int arr[100], int jml);

int main() {
printf("===== Menu =====\n");
printf("1. Input Array\n");
printf("2. Bubble Sort Asc\n");
printf("3. Bubble Sort Desc\n");
printf("4. Keluar Program\n");
printf("===== ==== =====\n");
do{
printf("Pilihan Menu : "); scanf("%d", &NoMenu);
switch(NoMenu){
case 1 : VInputData(); break;
case 2 : VbSortDataAsc(arr, jml); break;
case 3 : VbSortDataDesc(arr, jml); break;
case 4 : printf("Keluar Program ...");break;
default : printf("Inputan tidak valid!\n");
}
}while(NoMenu!=4);
return 0;
}

void VInputData(){
int i;
printf("Masukkan berapa data : "); scanf("%d", &jml);
for(i=0; i<jml; i++){
printf("Masukkan Nilai Data ke-%d : ", i+1); scanf("%d", &arr[i]);
}
}

void VbSortDataAsc(int arr[100], int jml){


int swap, i, temp;
do{

DEDEN FARHAN | 0618104038 Halaman 11


swap = 0;
for(i=0; i<(jml-1); i++){
if(arr[i] > arr[i+1]){
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
swap = 1;
}
}
}while(swap==1);

printf("Bubble sort asc\n");


for(i=0; i<jml; i++){
printf("%d\n", arr[i]);
}

}
void VbSortDataDesc(int arr[100], int jml){
int swap, i, temp;
do{
swap = 0;
for(i=0; i<(jml-1); i++){
if(arr[i] < arr[i+1]){
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
swap = 1;
}
}
}while(swap==1);

printf("Bubble sort desc\n");


for(i=0; i<jml; i++){

DEDEN FARHAN | 0618104038 Halaman 12


printf("%d\n", arr[i]);
}
}

DEDEN FARHAN | 0618104038 Halaman 13

Anda mungkin juga menyukai