Advertisement
Odense

Task 1

Jan 29th, 2021 (edited)
1,044
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.58 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5.  
  6. /*
  7.     Видаляємо букви, що повторюються та рахуємо довжину отриманого слова
  8. */
  9. bool check_word(char* word) {
  10.     int index = 0;
  11.     int word_without_duplicates_size = strlen(word);
  12.     char* word_without_duplicates = malloc(sizeof(char) * word_without_duplicates_size);
  13.     for (int i = 0; i < word_without_duplicates_size; i++) {
  14.         int j;  
  15.         for (j = 0; j < i; j++) {
  16.             if (word[i] == word[j])
  17.                 break;    
  18.         }
  19.         if (j == i)
  20.             word_without_duplicates[index++] = word[i];
  21.     }
  22.     int final_size = strlen(word_without_duplicates);
  23.     free(word_without_duplicates);
  24.     return final_size > 2;
  25. }
  26.  
  27. /*
  28.     Видалення працює шляхом заміщення елемента, який потрібно видалити з
  29.     подальшим зсувом всіх елементів в масиві.
  30.     Після цього зменшуємо значення довжини масиву на 1.
  31.     (1 2 3 4 5) => (видалити елемент з індексом 3) => (1 2 3 5).
  32. */
  33. int delete_element_from_array(char** array_to_print, int index, int array_length) {
  34.     for (int i = index; i < array_length - 1; i++) {
  35.         array_to_print[i] = array_to_print[i+1];
  36.     }
  37.     return --array_length;
  38. }
  39.  
  40. /*
  41.     Проходимо по масиву та виводимо кожен елемент.
  42. */
  43. void print_array(char** array_to_print, int array_length) {
  44.     for (int i = 0; i < array_length; i++) {
  45.         printf("%s\n", array_to_print[i]);
  46.     }
  47. }
  48.  
  49. int main()
  50. {
  51.     int n = 7;
  52.     char* words_set[] = {"abc", "aa", "ac", "hello", "aabb", "afdsf", "mama"};
  53.     char* words_array[n];
  54.     // Ініціалізуємо масив слів, у якому n елементів
  55.     for (int i = 0; i < n; i++) {
  56.         words_array[i] = words_set[i];
  57.     }
  58.  
  59.     print_array(words_array, n);
  60.     puts("");
  61.     // Проходимо по масиву слів, перевіряємо кожне слово,
  62.     // за потреби виконуємо видалення.
  63.     for (int i = 0; i < n; i++) {
  64.         if (!check_word(words_array[i])) {
  65.             printf("invalid word: %s\n", words_array[i]);
  66.             n = delete_element_from_array(words_array, i, n);
  67.             i -=1;
  68.         }
  69.     }
  70.     printf("\nFINAL ARRAY LENGTH: %d\n", n);
  71.     printf("\nFINAL ARRAY:\n");
  72.     print_array(words_array, n);
  73.    
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement