diff options
| author | Hyder Hadi <hyder@hyderhadi.xyz> | 2026-03-31 13:37:32 +0300 |
|---|---|---|
| committer | Hyder Hadi <hyder@hyderhadi.xyz> | 2026-03-31 13:37:32 +0300 |
| commit | 6b4e1641366f51e27eae78a2506b4b66d3e9cd4c (patch) | |
| tree | b0030b9b9eb4584f3b81a8344f4faa8a759989cd /simple-C-programs | |
| parent | 30a472f58f204dfbf325b8b389c9f3008aa4c40b (diff) | |
Simple C exercises that i solved :D
Diffstat (limited to 'simple-C-programs')
| -rw-r--r-- | simple-C-programs/DynamicArray.c | 119 | ||||
| -rw-r--r-- | simple-C-programs/MultiplicationTable.c | 26 | ||||
| -rw-r--r-- | simple-C-programs/NewPalindrome.c | 49 | ||||
| -rw-r--r-- | simple-C-programs/TouringMachine.c | 47 | ||||
| -rw-r--r-- | simple-C-programs/cc4e_ch5_exercise.c | 44 |
5 files changed, 285 insertions, 0 deletions
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 <stddef.h> +#include <stdio.h> +#include <stdlib.h> + +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 diff --git a/simple-C-programs/MultiplicationTable.c b/simple-C-programs/MultiplicationTable.c new file mode 100644 index 0000000..2135d31 --- /dev/null +++ b/simple-C-programs/MultiplicationTable.c @@ -0,0 +1,26 @@ +#include <stdio.h> + +int main() { + + printf("Multiplication table to 10x10\n"); + + int multi_table[10][10]; + + for(int i = 0;i < 10;i++) { + for(int j = 0;j < 10;j++) { + multi_table[i][j] = (j + 1) * (i + 1); + } + } + + for(int i = 1; i <= 10;i++) { + for(int j = 1; j <= 10;j++) { + printf("%d ", multi_table[i - 1][j - 1]); + if ((j % 10) == 0) { + printf("\n"); + } + } + } + + printf("\n"); + return 0; + } diff --git a/simple-C-programs/NewPalindrome.c b/simple-C-programs/NewPalindrome.c new file mode 100644 index 0000000..e2402da --- /dev/null +++ b/simple-C-programs/NewPalindrome.c @@ -0,0 +1,49 @@ +#include <stdio.h> +#include <string.h> + + + +void reverse(char *destination, char *source) { + int length = strlen(source); + int i; + for(i = 0;source[i] != '\0';i++) { + destination[i] = source[length - 1]; + length--; + } + destination[i] = '\0'; +} + +void palindrom(char *input) { + + char tmp_dest[100]; + + reverse(tmp_dest , input); + + for(int i = 0;input[i] != '\0';i++) { + if(input[i] != tmp_dest[i]) { + printf("Not a palindrome\n"); + return; + } + } + printf("the word is a palindrome\n"); + +} + +int main() { + + char source[100]; + char destination[100]; + + fgets(source, sizeof(source), stdin); + + // to lowerCase the input letters + for(int i = 0;source[i] != '\0';i++) { + if(source[i] >= 'A' && source[i] <= 'Z') { + source[i] += 32; + } + } + + source[strcspn(source, "\n")] = '\0'; + palindrom(source); + return 0; +}
\ No newline at end of file diff --git a/simple-C-programs/TouringMachine.c b/simple-C-programs/TouringMachine.c new file mode 100644 index 0000000..e150a42 --- /dev/null +++ b/simple-C-programs/TouringMachine.c @@ -0,0 +1,47 @@ +#include <stdio.h> + +int main() { + char token[256]; + int position = 0, value, length; + char memory[256] = {0}; + + while (scanf("%s", token) == 1) { + + if (token[0] == 'q') { + break; + } + + for (length = 0; token[length] != '\0'; length++) + ; + + if (length > 1) { + value = 0; + for (int i = 0; token[i] != '\0'; i++) { + if (length == 3) { + int tmp = token[i]; + tmp = tmp - '0'; + tmp = tmp * 100; + value += tmp; + length--; + } else if (length == 2) { + int tmp = token[i]; + tmp = tmp - '0'; + tmp = tmp * 10; + value += tmp; + length--; + } else if (length == 1) { + int tmp = token[i]; + tmp = tmp - '0'; + value += tmp; + length--; + memory[position] = value; + } + } + } else if (token[0] == '>') { + position++; + } else if (token[0] == '<') { + position--; + } + } + printf("Memory:\n%s\n", memory); +}
\ No newline at end of file diff --git a/simple-C-programs/cc4e_ch5_exercise.c b/simple-C-programs/cc4e_ch5_exercise.c new file mode 100644 index 0000000..b3667b7 --- /dev/null +++ b/simple-C-programs/cc4e_ch5_exercise.c @@ -0,0 +1,44 @@ + +#include <stdio.h> + +void process(char *line) { + + // first function of the function; + printf("\nString: %s\n", line); + + // second function of the function + int count = 0; + while (line[count] != '\0') { + count++; + } + printf("Count=%d\n", count); + + // third function of the function + if (count > 10) { + printf("The tenth character is: %c", line[9]); + } + + // fourth function of the function + + count = 0; + while (line[count] != '\0') { + if (line[count] == ' ') { + line[count] = '-'; + } + count++; + } + + // fifth fucntion of the function + printf("\nString: %s\n", line); +} + +int main() { + + char input[1000]; + + fgets(input, sizeof(input) - 1, stdin); + + process(input); + + return 0; +}
\ No newline at end of file |
