Skip to content

Instantly share code, notes, and snippets.

@RianWardana
Last active October 16, 2017 07:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RianWardana/11197300347332495eb71f2d69dacd2c to your computer and use it in GitHub Desktop.
Save RianWardana/11197300347332495eb71f2d69dacd2c to your computer and use it in GitHub Desktop.
// 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