Last active
May 9, 2017 04:42
-
-
Save RianWardana/8a813ff0978eb8928bc524f28316e54a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <string.h> | |
// FUNGSI UNTUK MENCARI NILAI MAKSIMUM DARI BEBERAPA DATA // | |
int max(int a, int b, int c, int d, int e) { | |
int ab = (a >= b ? a : b); | |
int cd = (c >= d ? c : d); | |
int abcd = (ab >= cd ? ab : cd); | |
int abcde = (abcd >= e ? abcd : e); | |
return abcde; | |
} | |
// FUNGSI UNTUK MENCARI LEBAR DARI NILAI // | |
int getWidth(int a) { | |
int valueWidth = 0; | |
while (a != 0) { | |
a /= 10; | |
valueWidth++; | |
} | |
return valueWidth; | |
} | |
// CEK APAKAH ADA DATA YANG TIDAK MEMILIKI TINGGI // | |
void cekDataHilang(float a, float b, float c, float d, float e) { | |
if ((a <= 1) || (b <= 1) || (c <= 1) || (d <= 1) || (e <= 1)) | |
printf("\n\n Grafik data tidak akan muncul apabila tinggi grafik\n terlalu kecil atau perbedaan antar data terlalu besar"); | |
} | |
// MENCETAK NAMA PROGRAM DAN PEMBUAT // | |
void clearScreen() { | |
system("cls"); | |
printf("\n +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); | |
printf("\n + PROGRAM VISUALISASI GRAFIK BATANG DATA +"); | |
printf("\n + Oleh : Arbariyanto Mahmud Wicaksono (1506717020) arbariyantom@gmail.com +"); | |
printf("\n + : Nurian Satya Wardana (1506717071) rianwardana@live.com +"); | |
printf("\n + Jika terdapat kendala, silakan hubungi kami +"); | |
printf("\n +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); | |
printf("\n"); | |
} | |
// CETAK JENIS GRAFIK // | |
void printGraphType() { | |
printf("\n"); | |
printf("\n | | "); | |
printf("\n | ##### |--------------------------+ "); | |
printf("\n | ##### | | "); | |
printf("\n | ##### |--------------------------+ "); | |
printf("\n | ##### ##### | "); | |
printf("\n | ##### ##### |----------------+ "); | |
printf("\n | ##### ##### | | "); | |
printf("\n | ##### ##### |----------------+ "); | |
printf("\n |_______________ |___________________________ "); | |
printf("\n "); | |
printf("\n VERTIKAL HORIZONTAL "); | |
printf("\n\n Pilihan bentuk grafik Anda? (v/h) "); | |
} | |
// CETAK MODEL GRAFIK // | |
void printGraphModel(char graphType, int graphHeight, int columnWidth, char bar) { | |
printf("\n"); | |
if (graphType == 'h') { | |
printf("\n | "); | |
printf("\n | |------L-------| "); | |
printf("\n | "); | |
printf("\n |----------------+ "); | |
printf("\n | | "); | |
printf("\n |----------------+ "); | |
printf("\n |____________________"); | |
printf("\n"); | |
printf("\n Lebar grafik (L) : %d", columnWidth); | |
} else { | |
printf("\n [JUDUL GRAFIK] "); | |
printf("\n | "); | |
printf("\n | --L-- "); | |
printf("\n | ##### | Tinggi Grafik (t) : %d ", graphHeight); | |
printf("\n | ##### | Lebar kolom (L) : %d ", columnWidth); | |
printf("\n | ##### t Simbol Grafik : %c ", bar); | |
printf("\n | ##### | "); | |
printf("\n | ##### | "); | |
printf("\n |__________________ "); | |
printf("\n 1 "); | |
printf("\n"); | |
printf("\n Tinggi grafik (t) mengatur skala tinggi dari grafik."); | |
printf("\n Lebar kolom (L) mengatur lebar kolom masing-masing data."); | |
printf("\n (Lebar kolom menyesuaikan dengan data terpanjang)."); | |
printf("\n Simbol grafik (#) mengatur tampilan grafik batang."); | |
printf("\n Judul grafik dapat diatur pada halaman konfigurasi selanjutnya."); | |
} | |
printf("\n\n Gunakan konfigurasi default? (y/n) "); | |
} | |
// CETAK MODEL TEKS GRAFIK // | |
void printTextModel(char graphType) { | |
printf("\n\n"); | |
if (graphType == 'h') { | |
printf("\n [JUDUL GRAFIK] "); | |
printf("\n | "); | |
printf("\n |----------------+ "); | |
printf("\n [JUDUL DATA 1] | | "); | |
printf("\n |----------------+ "); | |
printf("\n | "); | |
printf("\n (dst...) | "); | |
printf("\n |____________________"); | |
printf("\n"); | |
} else { | |
printf(" LEGENDA (ditampilkan tepat di bawah grafik)\n"); | |
printf(" +---+----------------+\n"); | |
printf(" | 1 | [JUDUL DATA 1] |\n"); | |
printf(" +---+----------------+\n"); | |
printf(" | (dst...) |\n"); | |
printf(" +---+----------------+\n"); | |
} | |
printf("\n Tambahkan judul dan legenda pada grafik? (y/n) "); | |
} | |
// CETAK JUDUL GRAFIK // | |
void printTitle(char graphType, int columnWidth, char stringJudul[], int maxStringLength) { | |
int strLength = strlen(stringJudul) - 1; | |
int marginLeft, i; | |
printf("\n "); | |
if (graphType == 'h') { | |
int totalLength = maxStringLength + (columnWidth*2); | |
marginLeft = (totalLength - strLength) / 2; | |
} else { | |
int graphLength = (5 * columnWidth) + 5; | |
marginLeft = (graphLength - strLength) / 2; | |
} | |
marginLeft = (marginLeft > 0 ? marginLeft : 1); | |
for (i = 0; i < marginLeft; i++) printf(" "); | |
printf("%s", stringJudul); | |
printf("\n"); | |
} | |
// CETAK GARIS SUMBU X // | |
void printAxisX(int columnWidth) { | |
printf(" |"); | |
int i; | |
for (i = 0; i < (5 * columnWidth) + 5 + 1; i++) { | |
printf("_"); | |
} | |
printf("\n"); | |
} | |
// CETAK LABEL SUMBU X // | |
void printLabelX(int columnWidth) { | |
int i; | |
printf(" "); | |
int count = 1; | |
int firstMiddle = (columnWidth + 1) / 2; | |
for (i = 1; i < (5 * columnWidth) + 5; i++) { | |
if ( (i == firstMiddle) || ((i - firstMiddle) % (columnWidth + 1)) == 0 ) { | |
printf("%d", count); | |
count++; | |
} else | |
printf(" "); | |
} | |
printf("\n"); | |
} | |
// CETAK JUDUL SUMBU X // | |
void printAxisTitleX(int columnWidth) { | |
int i; | |
printf("\n "); | |
for (i = 1; i < (5 * columnWidth) + 5; i++) { | |
if (i == (((5 * columnWidth) + 5) / 2) - 2) { | |
printf("DATA"); | |
} else printf(" "); | |
} | |
} | |
// CETAK LEGENDA GRAFIK // | |
void printLegend(char stringData_1[], char stringData_2[], char stringData_3[], char stringData_4[], char stringData_5[]) { | |
int i; | |
int length_1 = strlen(stringData_1); | |
int length_2 = strlen(stringData_2); | |
int length_3 = strlen(stringData_3); | |
int length_4 = strlen(stringData_4); | |
int length_5 = strlen(stringData_5); | |
int maxLength = max(length_1, length_2, length_3, length_4, length_5); | |
printf("\n +---+"); for (i = 0; i < maxLength + 2; i++) printf("-"); printf("+"); | |
printf("\n | 1 | %s", stringData_1); for (i = 0; i <= maxLength - length_1; i++) printf(" "); printf("|"); | |
printf("\n +---+"); for (i = 0; i < maxLength + 2; i++) printf("-"); printf("+"); | |
printf("\n | 2 | %s", stringData_2); for (i = 0; i <= maxLength - length_2; i++) printf(" "); printf("|"); | |
printf("\n +---+"); for (i = 0; i < maxLength + 2; i++) printf("-"); printf("+"); | |
printf("\n | 3 | %s", stringData_3); for (i = 0; i <= maxLength - length_3; i++) printf(" "); printf("|"); | |
printf("\n +---+"); for (i = 0; i < maxLength + 2; i++) printf("-"); printf("+"); | |
printf("\n | 4 | %s", stringData_4); for (i = 0; i <= maxLength - length_4; i++) printf(" "); printf("|"); | |
printf("\n +---+"); for (i = 0; i < maxLength + 2; i++) printf("-"); printf("+"); | |
printf("\n | 5 | %s", stringData_5); for (i = 0; i <= maxLength - length_5; i++) printf(" "); printf("|"); | |
printf("\n +---+"); for (i = 0; i < maxLength + 2; i++) printf("-"); printf("+"); | |
printf("\n"); | |
} | |
// CETAK KONTAK PEMBUAT // | |
void printContact() { | |
printf("\n\n Jika ada kendala, hubungi:"); | |
printf("\n arbariyantom@gmail.com"); | |
printf("\n rianwardana@live.com"); | |
} | |
// PROGRAM UTAMA // | |
int main() { | |
// system("mode 800"); | |
int iterGraphHeight = 0; | |
int iterColumnWidth = 0; | |
int iterSpaceValue = 0; | |
int maxChar = 24; | |
char stringJudul[maxChar]; | |
char stringData_1[maxChar], stringData_2[maxChar], stringData_3[maxChar], stringData_4[maxChar], stringData_5[maxChar]; | |
int maxStringLength = 1; | |
int stringLength_1 = 1; | |
int stringLength_2 = 1; | |
int stringLength_3 = 1; | |
int stringLength_4 = 1; | |
int stringLength_5 = 1; | |
// NILAI DEFAULT // | |
int graphHeight = 20; | |
int columnWidth = 15; | |
char bar = '#'; | |
int value1 = 1; | |
int value2 = 2; | |
int value3 = 3; | |
int value4 = 4; | |
int value5 = 5; | |
char isDefault = 'y'; | |
char isConfigureText = 'n'; | |
char graphType = 'h'; | |
// INPUT DATA DARI USER // | |
clearScreen(); | |
printf("\n INPUT DATA GRAFIK (5 data)"); | |
printf("\n Data 1\t: "); | |
scanf("%d", &value1); | |
printf(" Data 2\t: "); | |
scanf("%d", &value2); | |
printf(" Data 3\t: "); | |
scanf("%d", &value3); | |
printf(" Data 4\t: "); | |
scanf("%d", &value4); | |
printf(" Data 5\t: "); | |
scanf("%d", &value5); | |
// PILIHAN JENIS GRAFIK // | |
clearScreen(); | |
printf("\n KONFIGURASI BENTUK GRAFIK"); | |
printGraphType(); | |
scanf(" %c", &graphType); | |
// APAKAH USER MAU MENGGUNAKAN KONFIGURASI DEFAULT ? // | |
clearScreen(); | |
printf("\n KONFIGURASI GRAFIK DEFAULT"); | |
printGraphModel(graphType, graphHeight, columnWidth, bar); | |
scanf(" %c", &isDefault); | |
// JIKA USER TIDAK MAU MENGGUNAKAN KONFIGURASI DEFAULT, TAMPILKAN FORM KONFIGURASI // | |
if (isDefault == 'n') { | |
printf("\n KONFIGURASI GRAFIK"); | |
printf("\n"); | |
if (graphType == 'v') printf(" Tinggi Grafik\t: "); | |
if (graphType == 'v') scanf("%d", &graphHeight); | |
printf(" Lebar Kolom\t: "); | |
scanf("%d", &columnWidth); | |
if (graphType == 'v') printf(" Simbol Grafik\t: "); | |
if (graphType == 'v') scanf(" %c", &bar); | |
} | |
// APAKAH USER INGIN MENGISI JUDUL DAN LEGENDA // | |
clearScreen(); | |
printf("\n KONFIGURASI TEKS GRAFIK"); | |
printTextModel(graphType); | |
scanf(" %c", &isConfigureText); | |
// JIKA USER INGIN MENAMBAHKAN JUDUL DAN LEGENDA, TAMPILKAN FORM KONFIGURASI // | |
if (isConfigureText == 'y') { | |
printf("\n Judul grafik\t: "); | |
scanf(" %[^\n]s", &stringJudul); | |
printf(" Judul data 1\t: "); | |
scanf(" %[^\n]s", &stringData_1); | |
printf(" Judul data 2\t: "); | |
scanf(" %[^\n]s", &stringData_2); | |
printf(" Judul data 3\t: "); | |
scanf(" %[^\n]s", &stringData_3); | |
printf(" Judul data 4\t: "); | |
scanf(" %[^\n]s", &stringData_4); | |
printf(" Judul data 5\t: "); | |
scanf(" %[^\n]s", &stringData_5); | |
stringLength_1 = strlen(stringData_1); | |
stringLength_2 = strlen(stringData_2); | |
stringLength_3 = strlen(stringData_3); | |
stringLength_4 = strlen(stringData_4); | |
stringLength_5 = strlen(stringData_5); | |
maxStringLength = max(stringLength_1, stringLength_2, stringLength_3, stringLength_4, stringLength_5); | |
} | |
// MENGHITUNG BERAPA NILAI COLUMNWIDTH MINIMAL // | |
float maxValue = (float) max(value1, value2, value3, value4, value5); | |
int minColumnWidth = getWidth((int)maxValue); | |
columnWidth = (columnWidth >= minColumnWidth ? columnWidth : minColumnWidth); | |
// SUPAYA BERAPAPUN RANGE NILAINYA, PROGRAM DAPAT MENYESUAIKAN SKALA (TINGGI) MASING-MASING BAR // | |
float factor = (graphType == 'v' ? maxValue / graphHeight : maxValue / (columnWidth*2)); | |
float height1 = (value1 / factor); | |
float height2 = (value2 / factor); | |
float height3 = (value3 / factor); | |
float height4 = (value4 / factor); | |
float height5 = (value5 / factor); | |
// MENAMPILKAN JUDUL GRAFIK // | |
clearScreen(); | |
if (isConfigureText == 'y') | |
printTitle(graphType, columnWidth, stringJudul, maxStringLength); | |
else | |
printf("\n VISUALISASI DATA: GRAFIK BATANG\n\n"); | |
// FOR LOOP INI UNTUK MENGGAMBAR GRAFIK // | |
if (graphType == 'h') { | |
// MENGGAMBAR BAR 1 // | |
printf(" "); for (iterSpaceValue = 0; iterSpaceValue < maxStringLength; iterSpaceValue++) printf(" "); printf(" |"); | |
printf("\n "); for (iterSpaceValue = 0; iterSpaceValue < maxStringLength; iterSpaceValue++) printf(" "); printf(" |"); | |
for (iterColumnWidth = 0; iterColumnWidth < (int)height1; iterColumnWidth++) printf("-"); printf("+"); | |
printf("\n "); | |
if (isConfigureText == 'y') { | |
for (iterSpaceValue = 0; iterSpaceValue < maxStringLength - stringLength_1; iterSpaceValue++) printf(" "); | |
printf("%s |", stringData_1); | |
} else { | |
printf("1 |"); | |
} | |
for (iterColumnWidth = 0; iterColumnWidth < (int)height1; iterColumnWidth++) printf(" "); printf("| %d", value1); | |
printf("\n "); for (iterSpaceValue = 0; iterSpaceValue < maxStringLength; iterSpaceValue++) printf(" "); printf(" |"); | |
for (iterColumnWidth = 0; iterColumnWidth < (int)height1; iterColumnWidth++) printf("-"); printf("+"); | |
// MENGGAMBAR BAR 2 // | |
printf("\n "); for (iterSpaceValue = 0; iterSpaceValue < maxStringLength; iterSpaceValue++) printf(" "); printf(" |"); | |
printf("\n "); for (iterSpaceValue = 0; iterSpaceValue < maxStringLength; iterSpaceValue++) printf(" "); printf(" |"); | |
for (iterColumnWidth = 0; iterColumnWidth < (int)height2; iterColumnWidth++) printf("-"); printf("+"); | |
printf("\n "); | |
if (isConfigureText == 'y') { | |
for (iterSpaceValue = 0; iterSpaceValue < maxStringLength - stringLength_2; iterSpaceValue++) printf(" "); | |
printf("%s |", stringData_2); | |
} else { | |
printf("2 |"); | |
} | |
for (iterColumnWidth = 0; iterColumnWidth < (int)height2; iterColumnWidth++) printf(" "); printf("| %d", value2); | |
printf("\n "); for (iterSpaceValue = 0; iterSpaceValue < maxStringLength; iterSpaceValue++) printf(" "); printf(" |"); | |
for (iterColumnWidth = 0; iterColumnWidth < (int)height2; iterColumnWidth++) printf("-"); printf("+"); | |
// MENGGAMBAR BAR 3 // | |
printf("\n "); for (iterSpaceValue = 0; iterSpaceValue < maxStringLength; iterSpaceValue++) printf(" "); printf(" |"); | |
printf("\n "); for (iterSpaceValue = 0; iterSpaceValue < maxStringLength; iterSpaceValue++) printf(" "); printf(" |"); | |
for (iterColumnWidth = 0; iterColumnWidth < (int)height3; iterColumnWidth++) printf("-"); printf("+"); | |
printf("\n "); | |
if (isConfigureText == 'y') { | |
for (iterSpaceValue = 0; iterSpaceValue < maxStringLength - stringLength_3; iterSpaceValue++) printf(" "); | |
printf("%s |", stringData_3); | |
} else { | |
printf("3 |"); | |
} | |
for (iterColumnWidth = 0; iterColumnWidth < (int)height3; iterColumnWidth++) printf(" "); printf("| %d", value3); | |
printf("\n "); for (iterSpaceValue = 0; iterSpaceValue < maxStringLength; iterSpaceValue++) printf(" "); printf(" |"); | |
for (iterColumnWidth = 0; iterColumnWidth < (int)height3; iterColumnWidth++) printf("-"); printf("+"); | |
// MENGGAMBAR BAR 4 // | |
printf("\n "); for (iterSpaceValue = 0; iterSpaceValue < maxStringLength; iterSpaceValue++) printf(" "); printf(" |"); | |
printf("\n "); for (iterSpaceValue = 0; iterSpaceValue < maxStringLength; iterSpaceValue++) printf(" "); printf(" |"); | |
for (iterColumnWidth = 0; iterColumnWidth < (int)height4; iterColumnWidth++) printf("-"); printf("+"); | |
printf("\n "); | |
if (isConfigureText == 'y') { | |
for (iterSpaceValue = 0; iterSpaceValue < maxStringLength - stringLength_4; iterSpaceValue++) printf(" "); | |
printf("%s |", stringData_4); | |
} else { | |
printf("4 |"); | |
} | |
for (iterColumnWidth = 0; iterColumnWidth < (int)height4; iterColumnWidth++) printf(" "); printf("| %d", value4); | |
printf("\n "); for (iterSpaceValue = 0; iterSpaceValue < maxStringLength; iterSpaceValue++) printf(" "); printf(" |"); | |
for (iterColumnWidth = 0; iterColumnWidth < (int)height4; iterColumnWidth++) printf("-"); printf("+"); | |
// MENGGAMBAR BAR 5 // | |
printf("\n "); for (iterSpaceValue = 0; iterSpaceValue < maxStringLength; iterSpaceValue++) printf(" "); printf(" |"); | |
printf("\n "); for (iterSpaceValue = 0; iterSpaceValue < maxStringLength; iterSpaceValue++) printf(" "); printf(" |"); | |
for (iterColumnWidth = 0; iterColumnWidth < (int)height5; iterColumnWidth++) printf("-"); printf("+"); | |
printf("\n "); | |
if (isConfigureText == 'y') { | |
for (iterSpaceValue = 0; iterSpaceValue < maxStringLength - stringLength_5; iterSpaceValue++) printf(" "); | |
printf("%s |", stringData_5); | |
} else { | |
printf("5 |"); | |
} | |
for (iterColumnWidth = 0; iterColumnWidth < (int)height5; iterColumnWidth++) printf(" "); printf("| %d", value5); | |
printf("\n "); for (iterSpaceValue = 0; iterSpaceValue < maxStringLength; iterSpaceValue++) printf(" "); printf(" |"); | |
for (iterColumnWidth = 0; iterColumnWidth < (int)height5; iterColumnWidth++) printf("-"); printf("+"); | |
printf("\n "); for (iterSpaceValue = 0; iterSpaceValue < maxStringLength; iterSpaceValue++) printf(" "); printf(" |"); | |
for (iterColumnWidth = 0; iterColumnWidth <= (columnWidth*2) + getWidth((int)maxValue) + 2; iterColumnWidth++) printf("_"); | |
} | |
else { | |
for (iterGraphHeight = 0; iterGraphHeight <= graphHeight; iterGraphHeight++) { | |
printf(" |"); | |
// MENGGAMBAR BAR 1 // | |
printf(" "); | |
for (iterColumnWidth = 0; iterColumnWidth < columnWidth; iterColumnWidth++) { | |
if (iterGraphHeight < graphHeight - height1) printf(" "); | |
else if (iterGraphHeight == graphHeight - (int)height1) { | |
printf("%d",value1); | |
for (iterSpaceValue = 0; iterSpaceValue < columnWidth - getWidth(value1); iterSpaceValue++) printf(" "); | |
break; | |
} | |
else printf("%c", bar); | |
} | |
// MENGGAMBAR BAR 2 // | |
printf(" "); | |
for (iterColumnWidth = 0; iterColumnWidth < columnWidth; iterColumnWidth++) { | |
if (iterGraphHeight < graphHeight - height2) printf(" "); | |
else if (iterGraphHeight == graphHeight - (int)height2) { | |
printf("%d",value2); | |
for (iterSpaceValue = 0; iterSpaceValue < columnWidth - getWidth(value2); iterSpaceValue++) printf(" "); | |
break; | |
} | |
else printf("%c", bar); | |
} | |
// MENGGAMBAR BAR 3 // | |
printf(" "); | |
for (iterColumnWidth = 0; iterColumnWidth < columnWidth; iterColumnWidth++) { | |
if (iterGraphHeight < graphHeight - height3) printf(" "); | |
else if (iterGraphHeight == graphHeight - (int)height3) { | |
printf("%d",value3); | |
for (iterSpaceValue = 0; iterSpaceValue < columnWidth - getWidth(value3); iterSpaceValue++) printf(" "); | |
break; | |
} | |
else printf("%c", bar); | |
} | |
// MENGGAMBAR BAR 4 // | |
printf(" "); | |
for (iterColumnWidth = 0; iterColumnWidth < columnWidth; iterColumnWidth++) { | |
if (iterGraphHeight < graphHeight - height4) printf(" "); | |
else if (iterGraphHeight == graphHeight - (int)height4) { | |
printf("%d",value4); | |
for (iterSpaceValue = 0; iterSpaceValue < columnWidth - getWidth(value4); iterSpaceValue++) printf(" "); | |
break; | |
} | |
else printf("%c", bar); | |
} | |
// MENGGAMBAR BAR 5 // | |
printf(" "); | |
for (iterColumnWidth = 0; iterColumnWidth < columnWidth; iterColumnWidth++) { | |
if (iterGraphHeight < graphHeight - height5 ) printf(" "); | |
else if (iterGraphHeight == graphHeight - (int)height5) { | |
printf("%d",value5); | |
for (iterSpaceValue = 0; iterSpaceValue < columnWidth - getWidth(value5); iterSpaceValue++) printf(" "); | |
break; | |
} | |
else printf("%c", bar); | |
} | |
printf("\n"); | |
} | |
// CETAK GARIS SUMBU X // | |
printAxisX(columnWidth); | |
// CETAK LABEL SUMBU X // | |
printLabelX(columnWidth); | |
// CETAK LEGENDA ATAU JUDUL SUMBU X // | |
if (isConfigureText == 'y') { | |
printLegend(stringData_1, stringData_2, stringData_3, stringData_4, stringData_5); | |
} else { | |
printAxisTitleX(columnWidth); | |
} | |
} | |
// MENAMPILKAN PERINGATAN JIKA ADA DATA YANG TIDAK MUNCUL // | |
cekDataHilang(height1, height2, height3, height4, height5); | |
// MENAMPILKAN KONTAK PEMBUAT PROGRAM // | |
// printContact(); | |
// TAMPILKAN PROMPT UNTUK KEMBALI KE MENU UTAMA // | |
printf("\n\n\n Tekan apa saja untuk kembali ke menu "); | |
getch(); | |
main(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment