Last active
October 16, 2017 07:16
-
-
Save RianWardana/11197300347332495eb71f2d69dacd2c 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
// Nurian S Wardana | |
// Median, mean, dan modus pada array | |
#include <stdio.h> | |
// Deklarasi variabel yang nanti digunakan | |
int array[] = {127,99,54,11,7,4,1}; | |
int arrayLength = sizeof(array) / sizeof(int); | |
// Deklarasi fungsi-fungsi yang nanti dipakai | |
void cetakHeader(); | |
void cetakArray(int array[], int arrayLength); | |
void urutkanArray(int array[], int arrayLength, int isVerboseMode); | |
float medianArray(int array[], int arrayLength); | |
float meanArray(int array[], int arrayLength); | |
int modusArray(int array[], int arrayLength); | |
int main() { | |
cetakHeader(); | |
printf("Isi array pada mulanya\n"); | |
cetakArray(array, arrayLength); | |
urutkanArray(array, arrayLength, 1); | |
printf("\nIsi array setelah diurutkan\n"); | |
cetakArray(array, arrayLength); | |
printf("\n>>>MEDIAN>> %.2f\n", medianArray(array, arrayLength)); | |
printf(">>>>MEAN>>> %.2f\n", meanArray(array, arrayLength)); | |
printf(">>>>MODE>>> %d\n", modusArray(array, arrayLength)); | |
} | |
void cetakHeader() { | |
printf("Mengurutkan dan mencari median, mean, dan modus pada array."); | |
printf("\nOleh Nurian S Wardana, 1506717071\n\n"); | |
} | |
// Mencetak isi dalam array | |
void cetakArray(int array[], int arrayLength) { | |
int n; | |
for (n = 0; n < arrayLength; n++) printf("%d ", array[n]); | |
printf("\n"); | |
} | |
// Mengurutkan isi array dengan algoritma bubble sort | |
// Jika isVerboseMode = 1, setiap putaran pengurutan akan ditampilkan | |
void urutkanArray(int array[], int arrayLength, int isVerboseMode) { | |
int lastIndex = arrayLength - 1; | |
int i, j, k, dummy; | |
for (i = 0; i < lastIndex; i++) { | |
for (j = lastIndex; j > i; j--) { | |
dummy = array[j]; | |
if (array[j] < array[j-1]) { | |
array[j] = array[j-1]; | |
array[j-1] = dummy; | |
} | |
} | |
if (isVerboseMode == 1) { | |
printf("\nPengurutan putaran ke-%d\n", i + 1); | |
cetakArray(array, arrayLength); | |
} | |
} | |
} | |
// Mencari median array | |
float medianArray(int array[], int arrayLength) { | |
// Jika jumlah isi array adalah genap | |
if (arrayLength % 2 == 0) { | |
int medianSum = array[(arrayLength/2)-1] + array[arrayLength/2]; | |
float mean = (float)medianSum / 2; | |
return mean; | |
} else { // Jika jumlah isi array adalah ganjil | |
float median = array[(arrayLength/2)]; | |
return median; | |
} | |
} | |
// Menghitung rata-rata isi array | |
float meanArray(int array[], int arrayLength) { | |
int k, sum = 0; | |
for(k = 0; k < arrayLength; k++) { | |
sum = sum + array[k]; | |
} | |
return (float)sum / (float)arrayLength; | |
} | |
// Mencari modus array | |
// Dapat mengetahui apabila semua isi array berbeda (tak ada modus) | |
int modusArray(int array[], int arrayLength) { | |
int k, maxCountIndex; | |
int lastMaxCounter = 0; | |
int counter = 0; | |
for (k = 1; k < arrayLength; k++) { | |
if (array[k] == array[k-1]) counter++; | |
else counter = 0; | |
if (counter > lastMaxCounter) { | |
lastMaxCounter = counter; | |
maxCountIndex = k; | |
} | |
} | |
if (lastMaxCounter == 0) printf("\nAbaikan hasil penghitungan modus.\nArray ini tidak memiliki modus.\n", lastMaxCounter); | |
return array[maxCountIndex]; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment