0 / 0 / 0
Регистрация: 14.09.2015
Сообщений: 7
1

Напечатать все слова, содержащие ровно две маленькие латинские буквы

14.12.2015, 22:20. Показов 1330. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть пример решения данной задачи:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h>
#include <ctype.h>
#define DELIMITERS " .,:;?!\n\t"
#define N 1024
 
int Count(char *s)
{
 int i, count;
 for(i = count = 0; s[i] != '\0'; i++)
 if (islower(s[i]))
 count++;
 return count;
}
 
int main( )
{
 char s[N];
 char *word;
 int i, j, flag[256] = {0};
 fgets(s, N, stdin);
 for (i = 0; DELIMITERS[i]; i++)
 flag[DELIMITERS[i]] = 1;
 for (i = 0; s[i] && flag[s[i]]; i++);
 while (s[i])
 {
 word = s + i;
 while (s[i] && !flag[s[i]])
 i++;
 j = i;
 while (s[i] && flag[s[i]])
 i++;
 s[j] = '\0';
 if (Count(word) == 2)
 puts(word);
 }
 return 0;
}
Но неясны некоторые строки в коде, а имено:
C
1
2
 for (i = 0; DELIMITERS[i]; i++)
 flag[DELIMITERS[i]] = 1;
Что делает строка выше? Как её прочитать?

И извините, если не отвлекаю и есть желание, возможность, время, пожалуйста, опишите вкратце за что отвечает каждый из циклов.

Помогите пожалуйста, заранее спасибо за помощь!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2015, 22:20
Ответы с готовыми решениями:

Строка: Вывести все слова строки, содержащие ровно две буквы d.
(язык программирования Си) ................................................. Здравствуйте!), ...

Напечатать все слова, отличные от последнего слова строки, предварительно удалив из них гласные латинские буквы
Задана строка, содержащая не менее двух слов, разделенных одним или более пробелами. Напечатать все...

Во введённой строке заменить все маленькие латинские буквы на большие
4,2 Во введённой строке замените все маленькие латинские буквы набольшие

В символьной строке удалить все слова, содержащие две подряд идущие гласные буквы
Здравствуйте, помогите пожалуйста напрсать программу, сам вообще ноль :( Условие: В символьной...

1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12225 / 7357 / 1730
Регистрация: 25.07.2009
Сообщений: 13,470
14.12.2015, 22:59 2
danilkotov, как-то у Вас там сложно всё...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
int count_if(const char * str, int (*func)(int)) {
    return ( *str ) ? !!func(*str) + count_if(str + 1, func) : 0;
}
 
#define DELIM " \t\n"
#define MEETS_NEEDED (2)
 
int main(void) {
    char buf[BUFSIZ], * ptr;
    
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' )
        for ( ptr = strtok(buf, DELIM); ptr; ptr = strtok(NULL, DELIM) )
            if ( count_if(ptr, islower) == MEETS_NEEDED )
                printf("%s\n", ptr);
    
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2015, 22:59
Помогаю со студенческими работами здесь

Найти слова содержащие две рядом стоящие одинаковые буквы
Напечатать все слова, содержащие две рядом стоящие одинаковые буквы.

Выделить из предложения слова, содержащие две или более одинаковые буквы
Выделить из предложения слова, содержащие две или более одинаковые буквы. #include &lt;string.h&gt;...

Напечатать все слова предложения которые встречаются ровно один раз
Дано предложение, состоящее из слов, разделенных пробелами. Напечатать все слова, которые...

Напечатать все слова, которые встречаются в нем ровно один раз
Здравствуйте. Помогите, пожалуйста, с задачей. Условие: Дано предложение, состоящее из слов,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru