#include "cpp_headers/fcpp.hh"

int main() {
    print("Please enter 10 natural numbers, enter 0 to show the sorted array, -1 to quit");
    // initialize the array with 0s
    int numbers[10] = {0,0,0,0,0,0,0,0,0,0};
    // ask 11 times for input
    for (int i = 0; i < 11; i++) {
        int input = enter_int("> ");
        // quit on -1
        if (input == -1) {
            break;
        // print the array on 0
        } else if (input == 0) {
            printf("Array = [");
            for (int n = 0; n < 10; n++) {
                // last number is printed with trailing bracket and newline
                if (n == 9) {
                    printf("%d]\n", numbers[n]);
                // print out a single number with trailing space
                } else {
                    printf("%d ", numbers[n]);
                }
            }
            break;
        // if already full, quit
        } else if (i >= 10) {
            print("array already full, terminating");    
            break;
        // quit on invalid input
        } else if (input < -1) {
            print("input not allowed, terminating");
            break;
        // otherwise insert new input
        } else {
            // set last number to new input
            numbers[i] = input;
            // sort numbers from 0 to i
            for (int k = 0; k < i; k++) {
                // whenever we see a wrong ordered number
                if (numbers[k] > numbers[k+1]) {
                    int smaller = numbers[k+1];
                    int bigger = numbers[k];
                    // flip the numbers
                    numbers[k] = smaller;
                    numbers[k+1] = bigger;
                    // and step back to compare with previous numbers
                    if (k <= 1) {
                        // there is no number before the first one
                        k = 0;
                    } else {
                        // step back 2, because we are adding 1 each time
                        k = k-2;
                    }
                }
            }
        }
    }
}
