online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
#include <stdio.h> #define MAX_SIZE 100 /* Function declaration */ void inputArray(int * arr, int size); void printArray(int * arr, int size); /* Sort function declaration */ int sortAscending(int * num1, int * num2); int sortDescending(int * num1, int * num2); void sort(int * arr, int size, int (* compare)(int *, int *)); int main() { int arr[MAX_SIZE]; int size; /* * Input array size and elements. */ printf("Enter array size: "); scanf("%d", &size); printf("Enter elements in array: "); inputArray(arr, size); printf("\n\nElements before sorting: "); printArray(arr, size); // Sort and print sorted array in ascending order. printf("\n\nArray in ascending order: "); sort(arr, size, sortAscending); printArray(arr, size); // Sort and print sorted array in descending order. printf("\nArray in descending order: "); sort(arr, size, sortDescending); printArray(arr, size); return 0; } /** * Function to take input in array elements. * * @arr Array to store input. * @size Size of the array. */ void inputArray(int * arr, int size) { // Pointer to last element of array int * arrEnd = (arr + size - 1); // (arr++) Input in current array element and move to next element. // Till last array element (arr <= arrEnd) while(arr <= arrEnd) scanf("%d", arr++); } /** * Function to print all array elements. * * @arr Array to print. * @size Size of the array. */ void printArray(int * arr, int size) { // Pointer to last element of array int * arrEnd = (arr + size - 1); // *(arr++) Print current array element and move to next element. // Till last array element (arr <= arrEnd) while(arr <= arrEnd) printf("%d, ", *(arr++)); } /** * Function to compare two succesive elements. * The function returns difference of first and second integer. * * @num1 First integer to compare. * @num2 Second integer to compare. * * @return Difference of num1 and num2. */ int sortAscending(int * num1, int * num2) { return (*num1) - (*num2); } /** * Function to compare two successive elements. * The function returns difference of second and first parameter. * * @num1 First integer to compare. * @num2 Second integer to compare. * * @return Difference of num2 and num1. */ int sortDescending(int * num1, int * num2) { return (*num2) - (*num1); } /** * Function to sort an array in ascending or descending order. * This function is used to sort array in both order ascending or * descending. * * @arr Array to sort. * @size Size of the array. * @compare Function pointer returning integer and takes two int * * parameter. The function is called to get arrangement of * two successive array elements. */ void sort(int * arr, int size, int (* compare)(int *, int *)) { // Pointer to last array element int * arrEnd = (arr + size - 1); // Pointer to current array element int * curElem = arr; int * elemToSort; // Iterate over each array element while(curElem <= arrEnd) { elemToSort = curElem; // Compare each successive elements with current element // for proper order. while(elemToSort <= arrEnd) { /* * Compare if elements are arranged in order * or not. If elements are not arranged in order * then swap them. */ if(compare(curElem, elemToSort) > 0) { *curElem ^= *elemToSort; *elemToSort ^= *curElem; *curElem ^= *elemToSort; } elemToSort++; } // Move current element to next element in array. curElem++; } }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue