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

Найти самую длинную группу цифр (нужно исправить)

07.03.2016, 18:15. Показов 3588. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан текст, каждый символ которого может быть малой буквой, цифрой или одним из знаков +, -, *. Группой букв будем называть такую совокупность последовательно расположенных букв, которой непосредственно не предшествует и за которой непосредственно не следует буква. Аналогично определим группу цифр и группу знаков.

Найти самую длинную группу цифр. Если эту наибольшую длину имеет несколько групп, то взять самую последнюю.
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
#include "stdafx.h"
#include <iostream>
#include <cstring>
using namespace std;
 
int main()
{
    char *s;
    s = new char[100];
    cin >> s;
    int k = 0, n = 0;
    for (int i = 0; i<strlen(s); i++)
    {
        if (n<k) n = k;
        if (isdigit(s[i])) k = k + 1;
        else k = 0;
    }
    int a;
    for (int i = strlen(s); i >= 1; i--)
    {
        if (k == n) a = i + 1;
        if (isdigit(s[i])) k = k + 1;
        else k = 0;
    }
    for (int i = a; i<a + n; i++)
    {
        cout << s[i];
    }
    return 0;
}
нужно исправить , чтобы выводил последнюю группу цифр
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.03.2016, 18:15
Ответы с готовыми решениями:

Найти самую длинную группу цифр и поменять её с последней группой цифр
Дан текст. Найти самую длинную группу цифр и поменять её с последней группой цифр.Не надо лезть в...

В данном массиве найти самую длинную группу из записанных подряд элементоводного знака
1.В данном массиве найти самую длинную группу из записанных подряд элементоводного знака.

Найти самую длинную последовательность цифр в строке
Помогите новичку, пожалуйста) Нарушен п.5.18 Правил Запрещено размещать задания и решения в виде...

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

3
4 / 4 / 9
Регистрация: 07.03.2016
Сообщений: 44
07.03.2016, 19:14 2
Не понял зачем два раза пробегать по массиву(в начала и с конца),по моему проще сделать таким образом:
Пробегаем с первого до последнего, n - текущий размер, tmp - размер самой большой группы, max - номер элемента массива, с которого начинается самый большой последний блок цифр.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main(){
    char *s;
    s = new char[100];
    cin >> s;
    int max=-1, tmp = 0, n = 0;
    for (int i = 0; i<=strlen(s); i++)
    {
        if (isdigit(s[i])){
            n++;
            continue;
        }
        if(n<tmp){
            n=0;
            continue;
        }
        tmp=n;
        n=0;
        max=i-tmp;
    }
    for (int i = max; i<max+tmp; i++)
        cout << s[i];
}
0
0 / 0 / 1
Регистрация: 28.09.2015
Сообщений: 76
10.03.2016, 18:13  [ТС] 3
Цитата Сообщение от Igrich Посмотреть сообщение
Не понял зачем два раза пробегать по массиву(в начала и с конца),по моему проще сделать таким образом:
Пробегаем с первого до последнего, n - текущий размер, tmp - размер самой большой группы, max - номер элемента массива, с которого начинается самый большой последний блок цифр.
объясните , что делают эти 2 цикла
C++ (Qt)
1
2
3
4
5
6
for (int i = 0; i<=strlen(s); i++)
    {
        if (isdigit(s[i])){
            n++;
            continue;
        }
и
C++ (Qt)
1
2
3
if(n<tmp){
            n=0;
            continue;
0
18 / 18 / 9
Регистрация: 09.07.2015
Сообщений: 91
Записей в блоге: 2
10.03.2016, 18:48 4
fr0st1k123,
C++
1
2
3
4
5
6
for (int i = 0; i<=strlen(s); i++)
{
    if (isdigit(s[i])){
        n++;
        continue;
}
если текущий элемент массива - цифра, обновляет счетчик группы цифр, затем пропускает оставшуюся часть цикла, для проверки следующего элемента.

C++
1
2
3
if(n<tmp){
    n=0;
    continue;
если длина текущей группы цифр меньше предыдущей группы, сбрасывает счетчик длины группы и, тоже пропускает оставщуюся часть цикла для проверки следующего элемента
1
10.03.2016, 18:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.03.2016, 18:48
Помогаю со студенческими работами здесь

Определить самую длинную последовательность цифр в тексте
С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 1000...

Дана строка. Удалить из нее самую длинную подстроку, что состоит из цифр
Дана строка.Удалить из нее самую длинную подстроку , что состоит из цифр. Блин я недавно изучаю...

Найти самую длинную ленту
Заданы две ленты найти самую длинную их совместную под ленту Буду благодарен

Найти самую длинную строку в файле
Вроде все норм, вот только когда пытаюсь вывести через puts() - выводит все содержимое файла...


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

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

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