Advertisement
MaksNew

Untitled

Sep 12th, 2021
286
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.78 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <locale.h>
  4. #include <stdlib.h>
  5. #include <windows.h>
  6.  
  7. struct word
  8. {
  9.     int count;
  10.     char *word;
  11. };
  12.  
  13. int readInputString(char* str)
  14. {
  15.     printf("%s\n", "Введите строку: ");
  16.     gets(str);
  17.     int buf = 0;
  18.     for (int i = 0; i < strlen(str); i++)
  19.         if(str[i] == ' ')
  20.             buf++;
  21.     ++buf;
  22.     return buf;
  23. }
  24.  
  25. void createArrayOfStrings(char* strings[], char * str, int arrayOfStringsSize)
  26. {
  27.     int stringSize = 0;
  28.     for(int i = 0; i < arrayOfStringsSize; i++)
  29.     {
  30.         strings[i] = malloc(0);
  31.         for (int j = 0; (str[stringSize] != ' ') && (str[stringSize] != '\0');)
  32.         {
  33.             //if(!(((str[stringSize] > 65) && (str[stringSize] < 90)) || ((str[stringSize] > 97) && (str[stringSize] < 122))))
  34.                 //continue;
  35.             strings[i][j] = str[stringSize];
  36.             ++stringSize;
  37.             j++;
  38.         }
  39.         ++stringSize;
  40.     }
  41.     free(str);
  42. }
  43.  
  44. int createArrayOfWords(int arrayOfStringsSize, char* strings[], int size)
  45. {
  46.     for(int i = 0; i < arrayOfStringsSize; i++) //создали массив слов отличных от последнего
  47.     {
  48.         if (strcmp(strings[i], strings[arrayOfStringsSize-1]) != 0)
  49.             size++;
  50.     }
  51.     return size;
  52. }
  53.  
  54. void writeArrayOfWords(int arrayOfStringsSize, char* strings[], struct word *words, int *min)
  55. {
  56.     int count = 0;
  57.     for(int i = 0; i < arrayOfStringsSize; i++) //
  58.     {
  59.         count = 1;
  60.         if (strcmp(strings[i], strings[arrayOfStringsSize-1]) != 0)
  61.         {
  62.             for(int j = 1; j < strlen(strings[i]); ++j)
  63.                 if (((strings[i][j-1]-strings[i][j]) == 31) || ((strings[i][j-1]-strings[i][j]) == -1) || ((strings[i][j-1]-strings[i][j]) == -33))
  64.                     count++;
  65.             if (count < *min)
  66.                 *min = count;
  67.             words[i].word = malloc(0);
  68.             strcpy(words[i].word, strings[i]);
  69.             words[i].count = count;
  70.         }
  71.     }
  72.     free(strings);
  73. }
  74.  
  75. void printWords(int arrayOfStringsSize, char* strings[])
  76. {
  77.     int size = 0;
  78.     int min = 2000;
  79.     size = createArrayOfWords(arrayOfStringsSize, strings, size);
  80.     struct word words[size];
  81.     writeArrayOfWords(arrayOfStringsSize, strings, words, &min);
  82.     for (int i = 0; i < size; i++) //вывели слова
  83.         if(words[i].count == min)
  84.             puts(words[i].word);
  85. }
  86.  
  87. int main() {
  88.     SetConsoleCP(1251);
  89.     SetConsoleOutputCP(1251);
  90.     setlocale(LC_ALL, "Rus");
  91.     int arrayOfStringsSize;
  92.     char* str = malloc(0);
  93.     arrayOfStringsSize = readInputString(str);
  94.     char* strings[arrayOfStringsSize];
  95.     createArrayOfStrings(strings, str, arrayOfStringsSize);
  96.     printWords(arrayOfStringsSize, strings);
  97. }
  98.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement