Массив: В массиве строк найти все слова, содержащие заданное количество гласных букв - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Подскажите,пожалуйста, как доделать код. Мне нужно в массиве строк найти все слова, содержащие заданное количество гласных букв, у меня получилось только посчитать количество гласных в строках. Подскажите, как строку разделить на слова и произвести в них поиск гласных без использования указателей, пожалуйста?
Листинг программы
  1. #include<stdio.h>
  2. #include<conio.h>
  3. int main()
  4. {
  5. int i,j,y,c=0;
  6. char str[4][30];
  7. const char glas[]="AEIOUYaeiouy";
  8. clrscr();
  9. printf("\nZapolnite stroki:\n");
  10. for(i=0; i<4; i++)
  11. fgets(str[i],30,stdin);
  12. printf("\n vi vveli\n");
  13. for(i=0; i<4; i++)
  14. printf("\nstroka %d\n %s",i+1,str[i]);
  15. for(y=0;y<=4;y++)
  16. {
  17. for(i=0;str[y][i]!='\0';i++)
  18. {
  19. for(j=0;glas[j]!='\0';j++)
  20. {
  21. if(str[y][i]==glas[j])
  22. c++;
  23. }
  24. }
  25. }
  26. printf("%d",c);
  27. getch();
  28. return 0;
  29. }

Решение задачи: «Массив: В массиве строк найти все слова, содержащие заданное количество гласных букв»

textual
Листинг программы
  1. #include <stdio.h>
  2. #define N 4
  3. #define M 30
  4. int main()
  5. {
  6.     int i, j, y, count = 0, k, flag, l, n, q, flag_vowels = 0;
  7.     char str[N][M], buff[M];
  8.     const char glas[]="AEIOUYaeiouy";
  9.     char div[] = " ,.;:!?\n\t";
  10.     for(i = 0, j = 0; i < N; i++){
  11.         printf("Enter line %d:\n", i + 1);
  12.         fgets(str[i], M, stdin);
  13.         while(str[i][j] != '\n' && str[i][j] != '\0')
  14.             j++;
  15.         if(str[i][j] == '\n')
  16.             str[i][j] = '\0';
  17.     }
  18.     puts("Enter the number of vowels:");
  19.     while(1 != scanf("%d", &n) || n < 0){
  20.         fprintf(stderr, "Error!Try again.");
  21.         getchar();
  22.     }
  23.     for(i = 0; i < N; i++){
  24.         for(j = k = l = flag = 0; str[i][j]; j++){
  25.             for(y = 0; div[y]; y++){
  26.                 if(str[i][j] == div[y]){
  27.                     if(!flag){
  28.                         while(k < j){
  29.                             buff[l++] = str[i][k++];
  30.                         }
  31.                         buff[l] = '\0';
  32.                         if(buff[0]){
  33.                             for(count = q = 0; buff[q]; q++)
  34.                                 for(int i = 0; glas[i ]; i++)
  35.                                     if(buff[q] == glas[i]){
  36.                                         count++;
  37.                                         break;
  38.                                     }
  39.                             if(count == n){
  40.                                 printf("Word %s has %d vowels\n", buff, count);
  41.                                 flag_vowels = 1;
  42.                             }
  43.                         }
  44.                         l = 0;
  45.                         k++;
  46.                         flag = 1;
  47.                         break;
  48.                     }
  49.                     else
  50.                         k++;
  51.                 }
  52.             }
  53.             if(!div[y])
  54.                 flag = 0;
  55.             }
  56.     }
  57.     if(!flag_vowels)
  58.         printf("No words containing %d vowels\n", n);
  59.     return 0;
  60. }

Объяснение кода листинга программы

В этом коде выполняется следующая последовательность действий:

  1. Подключается заголовочный файл stdio.h, который содержит функции для ввода и вывода данных.
  2. Определяются две константы: N (количество строк в массиве) и M (максимальная длина строки).
  3. В функции main() инициализируются переменные i, j, y, count, k, flag, l, n, q и flag_vowels.
  4. Создается массив строк str и буфер buff.
  5. Вводится строка, которую необходимо проанализировать.
  6. Происходит поиск слов, содержащих заданное количество гласных букв.
  7. Если найденное слово соответствует условию, то выводится сообщение о количестве гласных букв в этом слове.
  8. Если в массиве нет слов, содержащих заданное количество гласных букв, то выводится соответствующее сообщение.
  9. Функция main() возвращает 0, что означает успешное завершение работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы