TUGAS 3
Disusun oleh:
Nama : DEDEN FARHAN
NPM : 0618104038
BANDUNG
2018
Tugas Pendahuluan III
1. Diketahui suatu data tiket sbb.
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");
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);
}
}
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:
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++){
}
}
}
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]);
}
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]);
}
}
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);
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);
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 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);