Написать программу, которая во вводимом с клавиатуры тексте выберет слова, начинающиеся с гласной буквы - C (СИ)
Формулировка задачи:
Как сделать так, чтоб проверял только первый символ? в новом слове. То если гласная где то в середине, то он начиная с гласной пишет огрызок слова =\
int main()
{
int i=0;
int x=0;
char D[]="eEyYuUiIoOaA";
char str[100];
puts("vod: ");
gets(str);
while (str[i] != '\0')
{
for(x = 0; D[x] !='\0';++x)
{
if (str[i] == D[x] )
{
while (str[i] != ' ' && str[i] != '\0')
{
printf("%c", str[i]);
i++;
}
printf("\n");
}
}
if (str[i] != '\0')
{
i++;
}
}
getch();
return 0;
}Решение задачи: «Написать программу, которая во вводимом с клавиатуры тексте выберет слова, начинающиеся с гласной буквы»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#define N 256
#define DELIM " \n\t,.;:?!"
int main()
{
int i;
char D[]="eEyYuUiIoOaA";
char str[N], *p;
puts("Enter line:");
fgets(str, N, stdin);
for(p = strtok(str, DELIM); p; p = strtok(NULL, DELIM)){
for(i = 0; D[i]; i++){
if (*p == D[i] ){
puts(p);
break;
}
}
}
return 0;
}
Объяснение кода листинга программы
В этом коде:
- #include
Включается файл стандартного ввода/вывода, который содержит функции для работы с консолью. - #include
Включается файл string.h, который содержит функции для работы со строками. - #define N 256 Определяется размер массива строк.
- #define DELIM
\n\t,.;:?!Определяется разделитель, который используется для разделения строки на слова. - int main() Определяется функция main(), которая является точкой входа в программу.
- int i; Объявляется переменная i, которая будет использоваться для цикла.
- char D[]=
eEyYuUiIoOaA; Объявляется массив D, который содержит гласные буквы. - *char str[N], p;** Объявляются переменные str и p.
- str[N] Это массив, который будет использоваться для хранения введенной строки.
- p Это указатель, который будет использоваться для перемещения по строке.
- puts(
Enter line:); Выводится приглашение для ввода строки. - fgets(str, N, stdin); Вводится строка с помощью функции fgets().
- for(p = strtok(str, DELIM); p; p = strtok(NULL, DELIM)){ Начинается цикл, который будет перебирать все слова в строке.
- for(i = 0; D[i]; i++){ Начинается внутренний цикл, который будет проверять каждое слово на наличие гласной буквы.
- *if (p == D[i] ){** Если текущая буква в слове совпадает с гласной, то выводится слово.
- puts(p); Выводится слово.
- break; Цикл прерывается, если найдено гласное слово.
- } Конец внутреннего цикла.
- } Конец внешнего цикла.
- return 0; Завершается функция main(). Список выделенных переменных и их значений:
- i - переменная для цикла, не имеет начального значения.
- D[] - массив гласных букв, содержит
eEyYuUiIoOaA. - str - массив для хранения введенной строки, содержит введенную строку.
- p - указатель для перемещения по строке, указывает на текущий символ в строке.