diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..1c8f08e --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.5) + +project(test LANGUAGES C) + +add_executable(test main.c) diff --git a/main.c b/main.c new file mode 100644 index 0000000..7111a07 --- /dev/null +++ b/main.c @@ -0,0 +1,100 @@ +#include +#include + +int get_user_input(){ + int x = -1; + int ok = -1; + while( ok != 1){ + /* as array values will only be >0, unsigned int is fine */ + ok = scanf("%u", &x); + if(ok == EOF){ + printf("\ncaught Ctrl+D...\n"); + ok = 1; + x = 2; + break; + } + if(ok == 0){ + while (fgetc(stdin) != '\n'){ + } + printf("[*] give me a correct value\n"); + break; + } + } + return x; +} + +int lemmego(){ + printf("[*] you wished to go, quitting...\n"); + return EXIT_SUCCESS; +} + +void print_banner(){ + printf("+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n" + "|u|l|t|i|m|a|t|e|_|a|r|r|a|y|_|h|a|n|d|l|e|r|\n" + "+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n"); +} + +void do_magic(uint arr_len){ + printf("[i] arr_len = %u\n", arr_len); + int *noice_arr = malloc(arr_len*sizeof(int)); + + printf("noice_arr: [ "); + for (int i = 0; i < arr_len; i++){ + noice_arr[i] = i; + printf("%d ", noice_arr[i]); + } + printf("]\n"); + + printf("[*] transposing array\n"); + + int *ugly_arr = malloc(arr_len*sizeof(int)); + uint helper = arr_len-1; + printf("ugly_arr: [ "); + for (int i = 0; i < arr_len; i++, helper--){ + ugly_arr[i] = noice_arr[helper]; + printf("%d ", ugly_arr[i]); + } + printf("]\n"); + + free(noice_arr); + free(ugly_arr); +} + +int main() +{ + int selection, arr_len=0; + + print_banner(); + + while ( selection != -1 ) { + printf("\npick a choice\n"); + printf("9000 - do magic\n" + "1 - quit\n" + "~> "); + + selection = get_user_input(); + + switch ( selection ) { + case 9000: + printf("[*] please gimme a natural number:\n" + "--> "); + arr_len = get_user_input(); + if (arr_len == 0) { + printf("[!] array cannot have zero size, mate...\n"); + break; + } + printf("[*] doing evil stuff\n"); + do_magic(arr_len); + break; + case 1: + lemmego(); + return 9000; + default: + printf("[x] invalid option\n"); + selection = 0; + break; + } + } + + return 0; +} diff --git a/testin b/testin new file mode 100644 index 0000000..8577cbb --- /dev/null +++ b/testin @@ -0,0 +1,3 @@ +9000 +20 +1