Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Найти самую длинную последовательность цифр в строке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Строки (перестановка 1 и последней буквы каждого слова) http://www.cyberforum.ru/cpp-beginners/thread1533072.html
Разработать программу, которая в заданной строке, представляющей собой некоторые предложение, меняет местами первую и последнюю букву каждого слова (слова разделены одним или несколько пробелами). ...
C++ Дано натуральное число, Верно ли, что оно заканчивается нечетной цифрой? дано натуральное число. Верно ли, что оно заканчивается нечетной цифрой http://www.cyberforum.ru/cpp-beginners/thread1533061.html
Чтение матрицы из файла C++
Есть программа ,но она неправильно работает. В чем проблема я никак не могу понять( С первой стройчкой все нормально, а вот с остальными какой-то бред( Даны два целых числа I, J и файл вещественных...
Какие темы нужно знать, чтобы начать работать с DirectX C++
День добрый! Прочитал уже почти 3 книги "для начинающих", множество статей, немного умею работать с WinAPI, пробую сам писать простые программки, но не могу осилить всё, что связано с окнами и...
C++ Сортировка объектов вектора http://www.cyberforum.ru/cpp-beginners/thread1533002.html
class Words { public: int number; // Номер в словаре для быстрого поиска string word; // Само слово vector <int> synonyms; // Номера синонимов в словаре Words() ...
C++ Условная операция Ребят помогите написать вот такой припер в VisualStudio С++ Только начал учить С++, не до конца понимаю, заранее спасибо Нарушен п.5.18 Правил Запрещено размещать задания и решения в виде... подробнее

Показать сообщение отдельно
Геомеханик
622 / 429 / 310
Регистрация: 26.06.2015
Сообщений: 968
18.09.2015, 19:14
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
#include <iostream>
#include <cctype>
 
//первый вариант
const char* find_maxseq(const char* s, size_t& n, int (*cmp)(int)){
    size_t m;
    const char* p, *f = NULL;
    n = 0;
    while(*s){
        while(*s && !(*cmp)(*s))
            ++s;
        p = s;
        while(*p && (*cmp)(*p))
            ++p;
        m = (size_t)(p - s);
        if(m > n){
            n = m;
            f = s;
        }
        s = p;
    }
    return f;
}
 
//второй вариант
char* find_maxseq(char* s, int (*cmp)(int)){
    size_t m, n = 0;
    char* p, *f = NULL;
    while(*s){
        while(*s && !(*cmp)(*s))
            ++s;
        p = s;
        while(*p && (*cmp)(*p))
            ++p;
        m = (size_t)(p - s);
        if(m > n){
            n = m;
            f = s;
        }
        s = p;
    }
 
    if(f != NULL)
        *(f + n) = '\0';
    return f;
}
 
int main(void) {
    char s[] = "bla-bla(123456), bla123456789, 89 end9";
 
    size_t n;
    const char* p = find_maxseq(s, n, &std::isdigit);
    if(p != NULL){
        std::cout.write(p, n);
        std::cout << std::endl;
    }
 
    char* t = find_maxseq(s, &std::isdigit);
    if(t != NULL)
        std::cout << t << std::endl;
    return 0;
}
Пример работы кода

Добавлено через 14 секунд
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
#include <iostream>
#include <cctype>
 
//первый вариант
const char* find_maxseq(const char* s, size_t& n, int (*cmp)(int)){
    size_t m;
    const char* p, *f = NULL;
    n = 0;
    while(*s){
        while(*s && !(*cmp)(*s))
            ++s;
        p = s;
        while(*p && (*cmp)(*p))
            ++p;
        m = (size_t)(p - s);
        if(m > n){
            n = m;
            f = s;
        }
        s = p;
    }
    return f;
}
 
//второй вариант
char* find_maxseq(char* s, int (*cmp)(int)){
    size_t m, n = 0;
    char* p, *f = NULL;
    while(*s){
        while(*s && !(*cmp)(*s))
            ++s;
        p = s;
        while(*p && (*cmp)(*p))
            ++p;
        m = (size_t)(p - s);
        if(m > n){
            n = m;
            f = s;
        }
        s = p;
    }
 
    if(f != NULL)
        *(f + n) = '\0';
    return f;
}
 
int main(void) {
    char s[] = "bla-bla(123456), bla123456789, 89 end9";
 
    size_t n;
    const char* p = find_maxseq(s, n, &std::isdigit);
    if(p != NULL){
        std::cout.write(p, n);
        std::cout << std::endl;
    }
 
    char* t = find_maxseq(s, &std::isdigit);
    if(t != NULL)
        std::cout << t << std::endl;
    return 0;
}
Пример работы кода
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru