Skip to content

Instantly share code, notes, and snippets.

@harryandriyan
Created October 10, 2017 07:02
Show Gist options
  • Save harryandriyan/4ebb4b6e131d9f92e6909825439cffb8 to your computer and use it in GitHub Desktop.
Save harryandriyan/4ebb4b6e131d9f92e6909825439cffb8 to your computer and use it in GitHub Desktop.
Kemiskinan Jogja dengan C
/*
copyleft
Nama : Harry Andriyan Maulana (16111140)
Tugas UAS Algoritma Pemrograman Lanjut
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct data_kab {
char kabupaten[20];
int garis_kemiskinan;
char total[10];
char prosentase[10];
};
float mode;
struct data_kab *sp;
void master_data();
void semua();
void get_menu();
void urutkan();
void cari();
int main() {
master_data();
printf("Daftar Kabupaten/Kota Daerah Istimewa Yogyakarta \n");
get_menu();
if (sp) {
free(sp);
}
getchar();
return 0;
}
void master_data() {
sp = (struct data_kab*) malloc(5 * sizeof(struct data_kab));
strcpy(sp[0].kabupaten, "Kulonprogo");
sp[0].garis_kemiskinan = 265575;
strcpy(sp[0].total, "84,67");
strcpy(sp[0].prosentase, "20,64 %");
strcpy(sp[1].kabupaten, "Sleman");
sp[1].garis_kemiskinan = 306961;
strcpy(sp[1].total, "110,44");
strcpy(sp[1].prosentase, "9,5 %");
strcpy(sp[2].kabupaten, "Gunungkidul");
sp[2].garis_kemiskinan = 243847;
strcpy(sp[2].total, "148,39");
strcpy(sp[2].prosentase, "20,83 %");
strcpy(sp[3].kabupaten, "Bantul");
sp[3].garis_kemiskinan = 301986;
strcpy(sp[3].total, "153,49");
strcpy(sp[3].prosentase, "15,89 %");
strcpy(sp[4].kabupaten, "Kota Yogyakarta");
sp[4].garis_kemiskinan = 366520;
strcpy(sp[4].total, "36,6");
strcpy(sp[4].prosentase, "8,67 %");
}
void semua() {
int i;
for(i = 0; i < 5; i++) {
printf("%d. %s \n Garis Kemiskinan : %d \n Total : %s \n Prosentase : %s \n \n",
i+1,
sp[i].kabupaten,
sp[i].garis_kemiskinan,
sp[i].total,
sp[i].prosentase
);
}
get_menu();
}
void get_menu() {
printf("\n====================================== \n");
printf("1. Pencarian berdasar nama kota/kabupaten \n");
printf("2. Urutkan berdasar Garis Kemiskinan \n");
printf("3. Tampilkan Semua data \n");
printf("0. Keluar Aplikasi \n");
printf("====================================== \n");
printf("Pilih Mode (1 , 2, 3 atau 0(untuk keluar) : ");
scanf("%f", &mode);
if (mode==1) {
cari();
}
else if (mode==2) {
urutkan();
}
else if (mode==3) {
semua();
}
else if(mode==0) {
exit;
}
}
void urutkan() {
int i=0;
int j=0;
for(i = 0;i < 4; i++) {
for (j = 0; j < 5-i-1; j++) {
if(sp[j].garis_kemiskinan > sp[j+1].garis_kemiskinan) {
struct data_kab kab_temp = sp[j];
sp[j] = sp[j+1];
sp[j+1] = kab_temp;
}
}
}
printf("Hasil Pengurutan data berdasar Garis Kemiskinan \n \n");
for(i = 0; i < 5; i++) {
printf("%d. %s \n Garis Kemiskinan : %d \n Total : %s \n Prosentase : %s \n \n",
i+1,
sp[i].kabupaten,
sp[i].garis_kemiskinan,
sp[i].total,
sp[i].prosentase
);
}
get_menu();
}
void cari() {
char q[20];
int is_ketemu = 0;
int posisi;
printf("Masukan kata kunci (nama kabupaten) : ");
scanf("%s", &q);
int i;
for(i = 0; i < 5; i++) {
if (strcmp(sp[i].kabupaten, q)==0) {
is_ketemu = 1;
posisi = i;
}
}
if (is_ketemu==1) {
printf("Data ditemukan di baris ke %d \n", posisi+1);
printf("%d. %s \n Garis Kemiskinan : %d \n Total : %s \n Prosentase : %s \n \n",
posisi+1,
sp[posisi].kabupaten,
sp[posisi].garis_kemiskinan,
sp[posisi].total,
sp[posisi].prosentase
);
get_menu();
} else {
printf("Data tak di temukan coba lagi (kata kunci Case Sensitive) \n");
cari();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment