From 6b4e1641366f51e27eae78a2506b4b66d3e9cd4c Mon Sep 17 00:00:00 2001 From: Hyder Hadi Date: Tue, 31 Mar 2026 13:37:32 +0300 Subject: Simple C exercises that i solved :D --- simple-C-programs/DynamicArray.c | 119 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 simple-C-programs/DynamicArray.c (limited to 'simple-C-programs/DynamicArray.c') diff --git a/simple-C-programs/DynamicArray.c b/simple-C-programs/DynamicArray.c new file mode 100644 index 0000000..2eda66f --- /dev/null +++ b/simple-C-programs/DynamicArray.c @@ -0,0 +1,119 @@ +#include +#include +#include + +int main() { + + // Using the heap exercise + + char buffer[1000]; + int string_legnth = 0; + int *arr = NULL; + int tmp_arr_value = 0; + size_t size_of_arr = 0; + int final_sum_result = 0; + int largest_elemnt = 0; + int input; + int found = 0; + + arr = malloc(sizeof(int)); + + printf("Get me bunch of numbers to sum it up all together (Enter q to see " + "result) [You can also search for a value you entered after seeing " + "the result (also press q to exit completely)]\n"); + + while (scanf("%s", buffer) == 1) { + + if (buffer[0] == 'q') { + break; + } + + tmp_arr_value = 0; + + // convert ASCII to intgers + for (int i = 0; buffer[i] != '\0'; i++) { + int tmp = buffer[i]; + tmp = tmp - '0'; + tmp_arr_value = tmp_arr_value * 10 + tmp; + } + + arr[size_of_arr] = tmp_arr_value; + + // reallocate for a new growing arr + int *tmp = realloc(arr, (size_of_arr + 1) * sizeof(int)); + if (!tmp) { + return 1; + } + arr = tmp; + size_of_arr++; + } + + for (int i = 0; arr[i] != '\0'; i++) { + final_sum_result += arr[i]; + } + + // finding the largest element in an array + for (int i = 0; arr[i] != '\0'; i++) { + if (largest_elemnt < arr[i]) { + largest_elemnt = arr[i]; + } + } + + // reverse the array + // finding the length of the array + int arr_len = 0; + for (int i = 0; arr[i] != '\0'; i++) { + arr_len++; + } + + printf("THE RESULT IS [%d]\n", final_sum_result); + printf("The largest value Entered was [%d]\n", largest_elemnt); + + // reversing the array + + int *rev_arr = malloc(sizeof(*rev_arr) * arr_len); + for (int i = 0; arr[i] != '\0'; i++) { + rev_arr[i] = arr[arr_len - 1]; + arr_len--; + } + + // printing the array in reverse + printf("The array in reverse is "); + for (int i = 0; rev_arr[i] != '\0'; i++) { + printf("%d ", rev_arr[i]); + } + + printf("\n"); + + while (scanf("%s", buffer) == 1) { + + if (buffer[0] == 'q') { + break; + } + + tmp_arr_value = 0; + + // convert ASCII to intgers + for (int i = 0; buffer[i] != '\0'; i++) { + int tmp = buffer[i]; + tmp = tmp - '0'; + tmp_arr_value = tmp_arr_value * 10 + tmp; + } + + for(int i = 0;arr[i] != '\0';i++) { + if(tmp_arr_value == arr[i]) { + found = tmp_arr_value; + } + } + if(found == 0) { + printf("Value not found\n"); + } + else if (found != 0) { + printf("The value is found within the array\n"); + found = 0; + } + } + free(arr); + free(rev_arr); + return 0; +} \ No newline at end of file -- cgit v1.2.3