С клавиатуры вводится текстовая строчка. Разработать программу, реализующую указанные действия.
а) подсчитывает количество слов в тексте, оканчивающихся на гласную букву; б) выводит на
экран все слова, длина которых меньше пяти символов.
C/C++
Нужен код на Си помогите пж
/*
Программа рассчитана на английский язык.
В русском языке в кодировках, например UTF-8,
может использоваться для буквы больше одного байта,
в моём случае 2.
И нужно использовать wchar_t.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const char alphabet[] = "aAbBcCdDeEfFGghHiIjJkKlLMmNnOoPpQqRrSsTtUuVvWwXxYyZz"; /* 26*2 = 52 */
const char glassnye[] = "aAEeIiOoUuYy"; /* 6*2 = 12 */
int is_letter(const char c)
{
for(int x = 0; x < 52; x++)
if(c == alphabet[x]) return 1;
return 0;
}
int is_glassnaja(const char c)
{
for(int x = 0; x < 12; x++)
if(c == glassnye[x]) return 1;
return 0;
}
int main()
{
const int size = 1024;
char * str;
str = (char *) malloc(size);
gets(str); /* ввод строки с клавиатуры */
int len = strlen(str); /* длина строки */
int count_glas = 0; /* для подсчёта слов, оканчивающихся на глассные */
int word_len = 0; /* для подсчёта длины слова */
/* нужно прокрутить строку */
for(int x = 0; x < len; x++)
{
if( is_letter(str[x]) )
{
word_len++;
if( ! is_letter(str[x + 1]) )
{ /* если следующий символ -- не буква */
if( is_glassnaja(str[x]) )
{ /* если последний символ слова -- гласная */
count_glas++;
}
if(word_len < 5) /* елси длина слова меньше пяти символов */
{
for(int y = x - word_len + 1; y <= x; y++) /* печатаем слово */
putchar(str[y]);
putchar('\n');
}
}
}
else
{
word_len = 0;
}
}
printf("Количество слов в строке, оканчивающихся на глассную -- %d.\n", count_glas);
free(str);
str = NULL;
return 0;
}
Программа рассчитана на английский язык.
В русском языке в кодировках, например UTF-8,
может использоваться для буквы больше одного байта,
в моём случае 2.
И нужно использовать wchar_t.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const char alphabet[] = "aAbBcCdDeEfFGghHiIjJkKlLMmNnOoPpQqRrSsTtUuVvWwXxYyZz"; /* 26*2 = 52 */
const char glassnye[] = "aAEeIiOoUuYy"; /* 6*2 = 12 */
int is_letter(const char c)
{
for(int x = 0; x < 52; x++)
if(c == alphabet[x]) return 1;
return 0;
}
int is_glassnaja(const char c)
{
for(int x = 0; x < 12; x++)
if(c == glassnye[x]) return 1;
return 0;
}
int main()
{
const int size = 1024;
char * str;
str = (char *) malloc(size);
gets(str); /* ввод строки с клавиатуры */
int len = strlen(str); /* длина строки */
int count_glas = 0; /* для подсчёта слов, оканчивающихся на глассные */
int word_len = 0; /* для подсчёта длины слова */
/* нужно прокрутить строку */
for(int x = 0; x < len; x++)
{
if( is_letter(str[x]) )
{
word_len++;
if( ! is_letter(str[x + 1]) )
{ /* если следующий символ -- не буква */
if( is_glassnaja(str[x]) )
{ /* если последний символ слова -- гласная */
count_glas++;
}
if(word_len < 5) /* елси длина слова меньше пяти символов */
{
for(int y = x - word_len + 1; y <= x; y++) /* печатаем слово */
putchar(str[y]);
putchar('\n');
}
}
}
else
{
word_len = 0;
}
}
printf("Количество слов в строке, оканчивающихся на глассную -- %d.\n", count_glas);
free(str);
str = NULL;
return 0;
}
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#define BUFFER 1024
_Bool is_vowel_en(char ch) {
int i = 0, n = 6;
const char* vowel = "aeiouyAEIOUY";
do if (ch == vowel[i]) break; while (++i < n);
return i != n;
}
_Bool is_vowel_ru(char ch) {
int i = 0, n = 6;
const char* vowel = "аеёиоуыэюяАЕЁИОУЫЭЮЯ";
do if (ch == vowel[i]) break; while (++i < n);
return i != n;
}
void function(char* token, unsigned* count, unsigned limit) {
if (token) {
unsigned length = strlen(token);
if (is_vowel_en(token[length - 1]) || is_vowel_ru(token[length - 1])) ++(*count);
if (length < limit) puts(token);
}
}
int main(void) {
char line[BUFFER] = { 0 };
unsigned count = 0U;
char* token = NULL;
char* next_token = NULL;
unsigned limit = 5;
system("chcp 1251 > nul");
printf("Введите строку: ");
fgets(line, BUFFER, stdin);
line[strlen(line) - 1] = 0;
token = strtok_s(line, " ", &next_token);
function(token, &count, limit);
while (token != NULL) {
token = strtok_s(NULL, " ", &next_token);
function(token, &count, limit);
}
printf("Количество: %u\n", count);
system("pause > nul");
return 0;
}
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#define BUFFER 1024
_Bool is_vowel_en(char ch) {
int i = 0, n = 6;
const char* vowel = "aeiouyAEIOUY";
do if (ch == vowel[i]) break; while (++i < n);
return i != n;
}
_Bool is_vowel_ru(char ch) {
int i = 0, n = 6;
const char* vowel = "аеёиоуыэюяАЕЁИОУЫЭЮЯ";
do if (ch == vowel[i]) break; while (++i < n);
return i != n;
}
void function(char* token, unsigned* count, unsigned limit) {
if (token) {
unsigned length = strlen(token);
if (is_vowel_en(token[length - 1]) || is_vowel_ru(token[length - 1])) ++(*count);
if (length < limit) puts(token);
}
}
int main(void) {
char line[BUFFER] = { 0 };
unsigned count = 0U;
char* token = NULL;
char* next_token = NULL;
unsigned limit = 5;
system("chcp 1251 > nul");
printf("Введите строку: ");
fgets(line, BUFFER, stdin);
line[strlen(line) - 1] = 0;
token = strtok_s(line, " ", &next_token);
function(token, &count, limit);
while (token != NULL) {
token = strtok_s(NULL, " ", &next_token);
function(token, &count, limit);
}
printf("Количество: %u\n", count);
system("pause > nul");
return 0;
}
Похожие вопросы
- Нужен код на Си помогите пж
- Нужен код на Си помогите пожалуйста
- МОЛЮ О ПОМОЩИ!!! НУЖЕН КОД НА C++!!!!!!!!! ПОМОГИТЕ!!!!!!!!!!!
- Помогите переделать код на Си
- Помогите, пожалуйста, срочно. Прокомментировать код на Си
- Помогите доработать код на СИ по теме строки
- Помогите пж написать код на C++
- Помогите написать код на Си, по теме "строки".
- Помогите с написанием кода на Си для микроконтроллера
- ГОСПОДА, нужна помощь по Си!