Advertisement
venik2405

lab3_yap

Sep 22nd, 2021
384
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.00 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2.  
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <locale.h>
  6. #include <stdlib.h>
  7.  
  8. #define separators " \n\t"
  9.  
  10. int count = 0;
  11. char* vowels[6] = { 'a', 'e', 'i', 'o', 'u', 'y' };
  12.  
  13. int compareWords(char temp) {
  14.     int flag;
  15.     for (int k = 0; k < 6; k++) {
  16.         if (temp == vowels[k]) {
  17.             return flag = 1;
  18.         }
  19.     }
  20.     return flag = 0;
  21. }
  22.  
  23. void main() {
  24.     setlocale(LC_ALL, "Rus");
  25.  
  26.     char defaultString[255] = "";
  27.     printf("Программа печатает все слова, отличные от последнего слова. Для каждой гласной буквы указать сколько раз она встречается в полученном предложении..\nПрограмма печатает все слова, отличные от последнего слова в таком порядке, чтобы последняя буква каждого слова совпадала с первой буквой следующего слова.");
  28.  
  29.     printf("\n\nВведите строку(максимум 255 символов):\n");
  30.     fgets(defaultString, 255, stdin);
  31.  
  32.     int wordsAmount = 0;
  33.     char* wordsA[255];
  34.     char* wordsB[255];
  35.     char* currentWord;
  36.     char* lastWord = NULL;
  37.     int сharacters[256] = { 0 };
  38.     char c;
  39.     int numberOfNonRepeatedWords = 0;
  40.     int numberOfDifferentWords = 0;
  41.     int countOfRepeats = 0;
  42.  
  43.     //задание а
  44.     for (currentWord = strtok(defaultString, separators); currentWord != NULL; currentWord = strtok(NULL, separators)) {
  45.         wordsA[wordsAmount] = currentWord;
  46.         wordsB[wordsAmount] = currentWord;
  47.         wordsAmount++;
  48.     }
  49.  
  50.     for (int i = 0; i < wordsAmount; i++) {
  51.         for (int j = 0; i > -1 && j < strlen(wordsA[i]); j++) {
  52.             if (wordsA[i][j] < 65 || wordsA[i][j] > 122 || wordsA[i][j] > 90 && wordsA[i][j] < 97) {
  53.                 for (int a = i; a < wordsAmount - 1; a++) {
  54.                     strcpy(wordsA[a], wordsA[a + 1]);
  55.                     strcpy(wordsB[a], wordsB[a + 1]);
  56.                 }
  57.                 wordsAmount--;
  58.                 i--;
  59.             }
  60.         }
  61.     }
  62.  
  63.     lastWord = wordsA[wordsAmount - 1];
  64.  
  65.     printf("Все слова, отличные от последнего:\n");
  66.     for (int j = 0; j < wordsAmount - 1; j++) {
  67.         if (strcmp(lastWord, wordsA[j]) != 0) {
  68.             numberOfDifferentWords++;
  69.             printf("  %s", wordsA[j]);
  70.             for (int a = -128; a <= 127; ++a) {
  71.                 сharacters[a + 128] = 0;
  72.             }
  73.         }
  74.     }
  75.     if (numberOfDifferentWords == 0) {
  76.         printf("\tНет слов, отличных от последнего.\n\n");
  77.     }
  78.  
  79.     for (int i = 0; i < wordsAmount; i++) {
  80.         for (int j = 0; i > -1 && j < strlen(wordsA[i]); j++) {
  81.             if (compareWords(wordsA[i][j]) == 1) {
  82.                 count++;
  83.             }
  84.         }
  85.     }
  86.     printf("\n\t\tБуква встречается %d раз", count);
  87.  
  88.  
  89.     //задание б
  90.  /*   printf("\nб) Слова, отличные от последнего, встречающиеся один раз:\n");
  91.     if (numberOfDifferentWords != 0) {
  92.         for (int j = 0; j < wordsAmount - 1; j++) {
  93.             if (strcmp(lastWord, wordsB[j]) != 0) {
  94.                 count = 0;
  95.                 for (int a = 0; a < wordsAmount - 1; a++) {
  96.                     if (strcmp(wordsB[a], wordsB[j]) == 0) {
  97.                         count++;
  98.                     }
  99.                 }
  100.                 if (count < 2) {
  101.                     printf("\t%s\n", wordsB[j]);
  102.                     numberOfNonRepeatedWords++;
  103.                 }
  104.             }
  105.         }
  106.         if (numberOfNonRepeatedWords == 0) {
  107.             printf("\tНет неповторяющихся слов, отличных от последнего.\n\n");
  108.         }
  109.     }
  110.     else {
  111.         printf("\tНет слов, отличных от последнего.\n\n");
  112.     }*/
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement