Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- using namespace std;
- int cari_modus(int arr[], int mode[], int posNow, int size, int k, int *n){
- int countA=0, countB=0;
- printf("now = %d\n",posNow);
- while (posNow == arr[k]){
- countA++;
- k++;
- if (k == size)
- {
- mode[*n] = arr[k-1];
- return countA;
- }
- }
- countB = cari_modus(arr, mode, arr[k], size, k, n);
- printf("count1 (%d)= %d count2 (%d)= %d\n",arr[k-1], countA, arr[k], countB);
- if (countA > countB) {
- printf("%d > %d\n", countA, countB);
- if(*n!=0 && mode[*n-1]!=arr[k-1]){
- mode[*n-1] = arr[k-1];
- }
- mode[*n] = arr[k-1];
- printf("mode[%d] = %d\n", *n, mode[*n]);
- }
- else if (countA < countB){
- printf("%d < %d\n", countA, countB);
- printf("mode[%d] = %d\n", *n, mode[*n]);
- return countB;
- }
- else if (countA == countB){
- printf("%d = %d\n", countA, countB);
- cout<< *n<<mode[*n];
- if(*n==0 && mode[*n]==0){
- mode[*n] = arr[k-1];
- }
- else
- {
- mode[++*n] = arr[k-1];
- }
- printf("mode[%d] = %d\n", *n, mode[*n]);
- }
- return countA;
- }
- int main(){
- int a[] = {1,1,2,3,3,3,3,3,4,4,4,5,5,5,5,5};
- // int a[] = {1};
- // int a[] = {1,2,1,2,3};
- // int a[] = {1,5,1,1,3};
- int ukuran = sizeof(a) / sizeof(a[0]);
- sort(a,a+ukuran);
- if (ukuran == 1) cout<< a[0];
- else{
- int n=0;
- int modus[5] ={0};
- cari_modus(a, modus,a[0], ukuran, 0, &n);
- n=0;
- while (modus[n] != 0){
- cout << "mode = "<< modus[n]<< "\n";
- n += 1;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment