Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 0:3d12bad4186e, committed 2018-04-15
- Comitter:
- asyrofi
- Date:
- Sun Apr 15 04:01:33 2018 +0000
- Commit message:
- bismillah bisa...
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
| mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 3d12bad4186e main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Sun Apr 15 04:01:33 2018 +0000
@@ -0,0 +1,82 @@
+#include<stdio.h>
+#include "mbed.h"
+#include "Serial.h"
+Serial uart1(USBTX,USBRX);
+/* Function to find the cross over point (the point before
+ which elements are smaller than or equal to x and after
+ which greater than x)*/
+int findCrossOver(int arr[], int low, int high, int x)
+{
+ // Base cases
+ if (arr[high] <= x) // x is greater than all
+ return high;
+ if (arr[low] > x) // x is smaller than all
+ return low;
+
+ // Find the middle point
+ int mid = (low + high)/2; /* low + (high - low)/2 */
+
+ /* If x is same as middle element, then return mid */
+ if (arr[mid] <= x && arr[mid+1] > x)
+ return mid;
+
+ /* If x is greater than arr[mid], then either arr[mid + 1]
+ is ceiling of x or ceiling lies in arr[mid+1...high] */
+ if(arr[mid] < x)
+ return findCrossOver(arr, mid+1, high, x);
+
+ return findCrossOver(arr, low, mid - 1, x);
+}
+
+// This function prints k closest elements to x in arr[].
+// n is the number of elements in arr[]
+void printKclosest(int arr[], int x, int k, int n)
+{
+ // Find the crossover point
+ int l = findCrossOver(arr, 0, n-1, x);
+ int r = l+1; // Right index to search
+ int count = 0; // To keep track of count of elements already printed
+
+ // If x is present in arr[], then reduce left index
+ // Assumption: all elements in arr[] are distinct
+ if (arr[l] == x) l--;
+
+ // Compare elements on left and right of crossover
+ // point to find the k closest elements
+ while (l >= 0 && r < n && count < k)
+ {
+ if (x - arr[l] < arr[r] - x)
+ uart1.printf("%d ", arr[l--]);
+ else
+ uart1.printf("%d ", arr[r++]);
+ count++;
+ }
+
+ // If there are no more elements on right side, then
+ // print left elements
+ while (count < k && l >= 0)
+ uart1.printf("%d ", arr[l--]), count++;
+
+ // If there are no more elements on left side, then
+ // print right elements
+ while (count < k && r < n)
+ uart1.printf("%d ", arr[r++]), count++;
+}
+
+/* Driver program to check above functions */
+int main()
+{
+ uart1.baud(9600);
+ wait(0.1);
+ int arr[] ={12, 16, 22, 30, 35, 39, 42,
+ 45, 48, 50, 53, 55, 56};
+ int n = sizeof(arr)/sizeof(arr[0]);
+ int x = 35, k = 4;
+ printKclosest(arr, x, 4, n);
+ while(1)
+ {
+ wait(0.1);
+ uart1.printf("%d \n",printKclosest);
+ }
+ //return 0;
+}
\ No newline at end of file
diff -r 000000000000 -r 3d12bad4186e mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sun Apr 15 04:01:33 2018 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/4f6c30876dfa \ No newline at end of file