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

Напечатать слова в которых есть удвоение букв

19.11.2017, 16:39. Показов 1005. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Напечатать те слова из введенного предложения, в которых есть удвоение букв, или вывести сообщение об их отсутствии.
Я пытался как-то так сделать:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <conio.h>
#define LEN 100
 
void main(void)
{
    char cArray[LEN];
    int i;
    gets(cArray);
    for (i = 0; cArray[i] != '\0'; i++) {
        if (cArray[i] == cArray[i + 1]) {
            puts(cArray[i]);
        }
        else {
            puts("There is no words like that");
        }
    }
    _getch();
}
Я вроде как понимаю что не правильно, но переделать не получается и теперь запутался и не знаю как сделать. Помогите решить.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2017, 16:39
Ответы с готовыми решениями:

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

Удалить из текстовой строки все слова в которых есть непарное количество согласных букв
удалить из текстовой строки все слова в которых есть непарное количество согласных букв.

Удалить из данного предложения слова, множество букв которых совпадает с множеством букв первого слова
стандартными стрелковыми функциями, объявленными в файле string.h пользоваться не разрешается ...

String.h: напечатать все слова, входящие в текстовую строку, и начинающиеся с букв заданного слова
Даны текстовая строка и слово (например, ba). Напечатать все слова, входящие в эту текстовую...

9
14 / 14 / 13
Регистрация: 05.07.2011
Сообщений: 233
19.11.2017, 17:21 2
ROSS_3005, уже предполагается, что имеется структура данных, содержащая эти слова или предложение ещё не разбито?
0
94 / 41 / 23
Регистрация: 18.09.2016
Сообщений: 379
19.11.2017, 17:28 3
ROSS_3005, этот код явно не такой маленький будет.
Вначале надо разбить предложение( strtok, посимвольная проверка до разделителя)
А потом уже каждое слово проверять на серию элементов, и лучше в цикле ставить длину слова - 1, а не проверку на терминальный ноль. Так выйдете за пределы массива.
0
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 29
19.11.2017, 17:35  [ТС] 4
Setplus, если я правильно понял то, что вы написали, то предложение не разбито на слова. Нужно ввести предложение и вывести те слова, в которых есть удвоение букв.
0
14 / 14 / 13
Регистрация: 05.07.2011
Сообщений: 233
19.11.2017, 17:44 5
ROSS_3005, тогда для начала я предлагаю Вам, к примеру, посмотреть, как в Кернигане и Ричи разобран очень похожий на Ваш пример, где предложение разбивается на слова, а потом делается некоторых их анализ.
0
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 29
19.11.2017, 21:28  [ТС] 6
Я тут разделил предложение на слова, но не понимаю как дальше проверить или в них есть удвоение букв:
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
#include <stdio.h>
#include <conio.h>
#define LEN 100
#define SIZE 100
 
void main(void)
{
 
    char cSentence[LEN];
    char cWords[LEN][SIZE];
    int a = 0, j = 0, i = 0;
    gets(cSentence);
    while (cSentence[a] != '\0') {
        if (cSentence[a] == ' ') {
            cWords[i][j] = '\0';
            j = 0;
            a++;
            i++;
        }
        cWords[i][j++] = cSentence[a++];
    }
    cWords[i][j] = '\0';
    _getch();
}
0
14 / 14 / 13
Регистрация: 05.07.2011
Сообщений: 233
19.11.2017, 21:55 7
ROSS_3005, самый очевидный способ - это пройтись от начала слова и сравнивать текущий и следующий элемент на предмет их равенства. Если совпали, то прекращаем просмотр, иначе - до конца слова.
0
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 29
26.11.2017, 19:06  [ТС] 8
Блин не могу понять как исправить этот код, чтобы он заработал. Помогите пожалуйста.
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
#include <stdio.h>
#define LEN 100
#define SIZE 100
 
void main(void)
{
    int i = 0, k = 0, j = 0;
    char s[LEN], s1[LEN][SIZE];
    gets(s);
    while (s[k] != '\0') {
        if (s[k] != ' ')
        {
            s1[i][j] = s[k];
            k++;
            j++;
        }
        else {
            s1[i][j] = '\0';
            for (j = 0; s1[i][j] != '\0'; j++) {
                if (s1[i][j] == s1[i][j + 1]) {
                    printf("%c", s1[i][j]);
                }
            }
            j = 0; 
            i++;
        }
    }
    _getch();
}
0
94 / 41 / 23
Регистрация: 18.09.2016
Сообщений: 379
26.11.2017, 19:59 9
ROSS_3005,
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
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main()
{
    char buff[100];
    gets( buff );
    char *ptr_1 = buff, *ptr_2 = NULL, *ptr_3 = ptr_2;
 
   while( *ptr_1 )
    {
        while( !isalpha( *ptr_1 ) ) ptr_1++;
        ptr_2 = ptr_1;
        while( isalpha( *ptr_2 ) ) ptr_2++;
        ptr_2--;
        ptr_3 = ptr_1;
        while( ptr_3 < ptr_2 )
        {
            if( *ptr_3 == *( ptr_3 + 1 ) )
            {
                while( ptr_1 <= ptr_2)
                        {
                            printf( "%c", *ptr_1 );
                            ptr_1++;
                        }
                putchar( '\n');
            }
 
 
            ptr_3++;
        }
        ptr_1 = ptr_2 + 1;
    }
    return 0;
}
0
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 29
26.11.2017, 22:09  [ТС] 10
Michail97, можете объяснить, что вы тут делаете?
Цитата Сообщение от Michail97 Посмотреть сообщение
while( !isalpha( *ptr_1 ) ) ptr_1++;
ptr_2 = ptr_1;
while( isalpha( *ptr_2 ) ) ptr_2++;
ptr_2--;
ptr_3 = ptr_1;
0
26.11.2017, 22:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2017, 22:09
Помогаю со студенческими работами здесь

Напечатать все слова, в которых первая буква слова входит в него более одного раза.
Решите пожалуйсто задачу на Си Напечатать все слова, в которых первая буква слова входит в него...

Напечатать все слова, состоящие из M букв
Ребят, выручите чайника:) 1. Дана строка из отдельных английских слов. Напечатать все слова,...

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

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


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

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

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