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

Обработка последовательности символов

24.02.2019, 19:43. Показов 1094. Ответов 1
Метки нет (Все метки)

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

Строка вводится в следующем формате: Количество_символов_в_словеСлово, Количество_символов_в_словеСлово, Количество_символов_в_словеСлово.
То есть, в начале пишется количество символов в слове, затем последовательность символов в самом слове. Слова разделяются запятой, строка заканчивается точкой.
Пример: 1a,2qw,3xyz,5ttttt.

Задание: Определить количество слов из М букв, начинающихся с заданной буквы C.


Вот что я уже написал:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <stdio.h> 
#include <string.h> 
#include <conio.h> 
#include <ctype.h> 
#include <locale.h> 
 
int function1(unsigned char *string, unsigned char *word, unsigned char *l_array)
{
    int i = 0,
        l_word = 0, //длина слова
        num_word = 0; // номер слова
 
 
    while (string[i] != '.') // цикл до конца строки
    {
        while ( (string[i] != ',') || (string[i] != '.') ) // цикл до конца слова
        {
            if (string[i] != ',')
            {
                l_word++; //считает длину слова
            }
 
            if (string[i + 1] == ',' || string[i + 1] == '.') // условия конца слова
            {
                l_array[num_word] = l_word; //заносим длину слова с цифрой
                i++;
                printf("\nДлина слова: %d", l_array[num_word]);
                num_word++;
                l_word = 0;
            }
            else
                i++;
 
            if ( string[i] == '.')
            {
                break;
            }
        }
    }
    int qty_word = num_word; //количество слов
    printf("\nКоличество слов: %d", qty_word);
    return qty_word;
}
 
void function2(unsigned char *string, unsigned char C, unsigned char *l_array, int qty_word)
{
 
    int M = 0, // счётчик слов
        i = 0;
    while (string[i] != '.')
 
        for (int num_word = 0; num_word < qty_word; num_word++)
        {
            if ( C == /* ? */  )
            {
                /* ? */
                M++;
            }
        }
 
        
    
}
 
int main()
{
    setlocale(LC_ALL, "rus");
 
 
 
    unsigned char   *string,
                    *l_array,
                    C;
 
    string  = (unsigned char*)malloc(100 * sizeof(unsigned char)); // массив для строки
    l_array = (unsigned char*)malloc(10  * sizeof(unsigned char)); // массив длин слов
 
    printf("Введите строку: ");
    gets(string);
    int qty_word = function1(string, l_array);
    
    printf("Введите C: ");
    scanf_s("%c", &C);
    function2(string, C, l_array, qty_word);
 
 
 
    system("pause");
}
Не могу придумать условие для fuction2, чтобы сравнивать C с первым символом в слове (после цифры).
Надеюсь на вашу помощь. Прошу обратить внимание на то, что используется язык Си. Отсюда gets и т.д. Извиняюсь, что тему создал не совсем там где надо, но разница не существенная.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2019, 19:43
Ответы с готовыми решениями:

Обработка последовательности символов
Помогите написать программу на обычном Си Для всех задач в исходные данные входит...

Дана последовательность символов x1, x2, ., xn. Выясните, есть ли среди символов этой последовательности пара символов
Дана последовательность символов x1, x2, ..., xn. Выясните, есть ли среди символов этой...

Дана последовательность символов x1, x2, ., xn. Выясните, есть ли среди символов этой последовательности пара символов
Дана последовательность символов x1, x2, ..., xn. Выясните, есть ли среди символов этой...

Дана строка символов, вывести последовательности символов, заключенные в скобки
(Помогите,пожалуйста) Дана строка символов. Признак конца-символ '\n'(перевод строки). Необходимо...

1
Диссидент
Эксперт C
26975 / 16849 / 3707
Регистрация: 24.12.2010
Сообщений: 37,848
25.02.2019, 20:06 2
wcoestarw, просматриваете слово до первой нецифры (маленький цикл). Вот эта первая "нецифра" и будет вашим символом.

Добавлено через 7 минут
Как-то так...
C
1
2
3
4
5
6
7
for (int num_word = 0; num_word < qty_word; num_word++)
{
     char d; 
     do {
        d = string[++i];
     } while(d>='0' && d<='9');
     if ( C == d  )
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2019, 20:06
Помогаю со студенческими работами здесь

Обработка последовательности символов
На скрине задача. abc готово, но осталось для меня проблемой добавить aba Буду рад помощи еще раз....

Обработка последовательности символов
Дана последовательность символов m . Пробел является разделением информации. В последнем слове все...

Обработка последовательности символов
Задан текст, разбитый на сова.Способ описания текста(массив символов(строка),массив...

обработка последовательности символов
1.Даны натуральные числа n и m , символы s1,....,sn (m&lt;n).Получить последовательность символов: ...


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

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

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