Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 03.12.2018
Сообщений: 20
1

Найти в каждом слове текста самую длинную группу знаков

15.12.2018, 20:55. Показов 1214. Ответов 14

Author24 — интернет-сервис помощи студентам
Помогите решить задачку.Задан следующий текст длинной до 255 символов. Найти в каждом слове текста самую длинную группу знаков. Напечатать номер каждого слова и найденную группу знаков.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2018, 20:55
Ответы с готовыми решениями:

Обработка строк. Найти самую длинную группу знаков
Растраматриваеться не пустая строка,содержащая не более 80 символов.Каждый символ строки,может быть...

Найти самую длинную группу цифр
Помогите с данной задачей, пожалуйста. "Дан текст, каждый символ которого может быть малой буквой,...

Найти самую длинную группу цифр
Дан текст каждый символ которого может быть малой буквой, цифрой или одним из знаков + - * ...

Найти самую длинную группу цифр.
Помогите плиз, надо написать программу и сделать блок-схему этой задачи. Найти самую длинную...

14
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
15.12.2018, 21:51 2
Цитата Сообщение от yriy123123 Посмотреть сообщение
самую длинную группу знаков
В смысле - самую длинную последовательность одинаковых символов?
0
0 / 0 / 0
Регистрация: 03.12.2018
Сообщений: 20
15.12.2018, 22:10  [ТС] 3
Цитата Сообщение от easybudda Посмотреть сообщение
В смысле - самую длинную последовательность одинаковых символов?
Да. В каждом слове найти самую длинную последовательность одинаковых символов
0
0 / 0 / 0
Регистрация: 03.12.2018
Сообщений: 20
16.12.2018, 15:02  [ТС] 4
easybudda,помогите пожалуйста.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
16.12.2018, 22:49 5
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
#include <stdio.h>
#include <string.h>
 
char * longest_sequence(const char * wrd) {
    const char * longest = wrd, * head, * tail;
    size_t len = 1;
 
    for ( head = wrd; *head; ) {
        for ( tail = head + 1; *tail == *head; ++tail )
            ;
        if ( tail - head > len ) {
            len = tail - head;
            longest = head;
        }
 
        head = tail;
    }
 
    return (char*) longest;
}
 
void print_while_same(const char * seq) {
    printf("%c", *seq);
    if ( seq[1] == seq[0] )
        print_while_same(seq + 1);
}
 
#define DELIM " \t\n"
 
int main(void) {
    char buf[BUFSIZ];
 
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) {
        char * ptr = strtok(buf, DELIM);
        int num = 1;
 
        printf("#\tWord\t\t\tLongest sequence\n");
        for ( ; ptr; ptr = strtok(NULL, DELIM) ) {
            printf("%d\t%s\t\t", num++, ptr);
            print_while_same(longest_sequence(ptr));
            printf("\n");
        }
 
        printf("\n");
    }
 
    return 0;
}
Код
[andrew@easybook string]$ gcc -Wall longest_same_chars.c 
[andrew@easybook string]$ ./a.out 
String: aaabbbccc aabbbbcc abccccccc
#	Word			Longest sequence
1	aaabbbccc		aaa
2	aabbbbcc		bbbb
3	abccccccc		ccccccc

String: 
[andrew@easybook string]$
2
0 / 0 / 0
Регистрация: 03.12.2018
Сообщений: 20
16.12.2018, 22:56  [ТС] 6
Цитата Сообщение от easybudda Посмотреть сообщение
В смысле - самую длинную последовательность одинаковых символов?
спасибо большое!!!
0
0 / 0 / 0
Регистрация: 03.12.2018
Сообщений: 20
24.12.2018, 19:01  [ТС] 7
easybudda, можете помочь сделать так, чтобы в каждом слове находило самую длинную группу знаков "+" "-" "/" "*" "=" ? Например в слове ad+--b* должно вывести +--.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
24.12.2018, 19:45 8
yriy123123, так
Цитата Сообщение от yriy123123 Посмотреть сообщение
помочь
или
Цитата Сообщение от yriy123123 Посмотреть сообщение
сделать
?
0
0 / 0 / 0
Регистрация: 03.12.2018
Сообщений: 20
24.12.2018, 19:59  [ТС] 9
easybudda, сделать и объяснить принцип роботы. Буду благодарен)
0
0 / 0 / 0
Регистрация: 03.12.2018
Сообщений: 20
25.12.2018, 17:59  [ТС] 10
easybudda, поможете?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
25.12.2018, 20:22 11
Цитата Сообщение от yriy123123 Посмотреть сообщение
поможете?
Ну Вы попробуйте хотябы, там сложного-то ничего. Поправлю, если ошибётесь.
0
0 / 0 / 0
Регистрация: 03.12.2018
Сообщений: 20
25.12.2018, 21:05  [ТС] 12
easybudda, я пробовал. даже сделал. Но для всей строки. Выводит самую длинную группу во всей строке. Как сделать чтобы искало в каждом слове и выводило на новую строку я не знаю. Вот код:
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
int compare(char wrd){
if(
(wrd=='+')||(wrd=='-')||(wrd=='*')||(wrd=='/'))return 1;
 return 0;
}
 
int main(){
 char string[101];
 gets(string);
 
 int len=1,max=0,pos=0,i;
 
 
for(i=0;i<strlen(string);i++){
 if(compare(string[i])){
   len++;
   if(len>max){
     max=len;
     pos=i;
   }
 }else {len=1;}
}
for(i=pos-max+2;compare(string[i]);i++)printf("%c",string[i]);
printf("\n");
 
 return 0;
}
Добавлено через 19 минут
easybudda, Просто мне это нужно на завтра сделать. А строки больная тема. Не думаю, что успею разобраться до завтра.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
26.12.2018, 03:55 13
Лучший ответ Сообщение было отмечено yriy123123 как решение

Решение

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
#include <stdio.h>
#include <string.h>
 
#define SPEC "+-*/"
#define isspec(ch) ( strchr(SPEC, (ch)) != NULL )
 
char * longest_spec_sequence(const char * str) {
    const char * longest = strpbrk(str, SPEC);
    if ( ! longest )
        return NULL;
    else {
        size_t len = 1;
        const char * head = longest, * tail;
 
        while ( head ) {
            for ( tail = head + 1; *tail && isspec(*tail); ++tail )
                ;
            if ( tail - head > len ) {
                longest = head;
                len = tail - head;
            }
            head = strpbrk(tail, SPEC);
        }
 
        return (char*)longest;
    }
}
 
void print_while_spec(const char * s) {
    while ( *s && isspec(*s) )
        printf("%c", *s++);
}
 
#define DELIM " \t\n"
 
int main(void) {
    char buf[BUFSIZ];
 
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) {
        char * ptr = strtok(buf, DELIM);
 
        for ( ; ptr; ptr = strtok(NULL, DELIM) ) {
            char * ss = longest_spec_sequence(ptr);
 
            if ( ss ) {
                printf("%s : ", ptr);
                print_while_spec(ss);
                printf("\n");
            }
        }
    }
 
    return 0;
}
2
0 / 0 / 0
Регистрация: 03.12.2018
Сообщений: 20
26.12.2018, 17:49  [ТС] 14
easybudda, Спасибо. Можете объяснить что делает эта строка:
Цитата Сообщение от easybudda Посмотреть сообщение
#define isspec(ch) ( strchr(SPEC, (ch)) != NULL )
?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
27.12.2018, 04:02 15
yriy123123, знакомы функции из ctype.h (isalpha, isdigit, etc...)? В зависимости от реализации они могут быть не функциями, а макросами. О том, что такое макрос, можно прочитать например здесь. В данном случае макрос возвращает 1, если переданный параметром символ входит в перечисленные в SPEC.
0
27.12.2018, 04:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2018, 04:02
Помогаю со студенческими работами здесь

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

Строка: найти самую длинную группу цифр
Дан текст, каждый символ которого может быть малой буквой, цифрой или одним из знаков +, -, *....

Найти самую длинную группу цифр (нужно исправить)
Дан текст, каждый символ которого может быть малой буквой, цифрой или одним из знаков +, -, *....

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


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

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