С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 26
1

Выбрать самую длинную подстроку, состоящую только из десятичных цифр

13.10.2019, 12:48. Показов 3623. Ответов 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
31
32
33
34
35
36
37
38
39
40
41
42
#include "pch.h"
#include <iostream>
#include <ctype.h>
#include <string.h>
 
using namespace std;
 
int main()
{
 
    char str[255], str1[255] = "\0", str2[255] = "\0";
 
    cout << "Enter text: ";
    cin.getline(str, 255);
 
    for (int i = 0,k,d; i < 255 && str[i] != '\0'; i++) {
 
         k = 0;
         d = 0;
        if (isdigit(str[i])) {
            for (; ; k++, i++) {
 
                if (!isdigit(str[i])) {
                    break;
                }
                str2[k] = str[i];
 
            }
            str2[++k] = '\0';
 
            if (strlen(str2) > strlen(str1)) {
                for ( ; d < k; ) {
                    str1[d] = str2[d];
                    d++;
                }
                
            }
            
        }
    }
    cout << atoi(str1);
}
После того, когда ввожу текст в консоль и нажимаю Enter выбивает ошибку с таким текстом:

Debug Assertion Failed!

Program: C:\проэкты с++\универ\LAB4 VAR41\c\Debug\c.exe
File: minkernel\crts\ucrt\src\appcrt\convert\isctype.cpp
Line: 36

Expression: c >= -1 && c <= 255

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

Помогите, пожалуйста))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.10.2019, 12:48
Ответы с готовыми решениями:

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

Определить самую длинную строку состоящую только из цифр
Помогите решить СРОЧНО!!! Пользователь вводит в консоль строки до тех пор, пока он не введет...

Найти самую длинную подстроку, состоящую из одинаковых символов
В данной строке найти самую длинную подстроку, состоящую из одинаковых символов.

Найти самую длинную подстроку, состоящую из одинаковых символов
Задача 2 В данной строке найти самую длинную подстроку, состоящую из одинаковых символов. ...

3
Модератор
Эксперт С++
13723 / 10920 / 6478
Регистрация: 18.12.2011
Сообщений: 29,150
13.10.2019, 13:31 2
Лучший ответ Сообщение было отмечено zEEmperon как решение

Решение

На первый взгляд вижу только одну неточность:
Цитата Сообщение от zEEmperon Посмотреть сообщение
str2[++k] = '\0';
k уже было увеличено на 1 в строке
Цитата Сообщение от zEEmperon Посмотреть сообщение
for (; ; k++, i++) {
Поэтому ++ тут не надо.
А вообще-то пользуйтесь
Как пользоваться отладчиком (в Visual Studio)
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
13.10.2019, 14:30 3
Лучший ответ Сообщение было отмечено zEEmperon как решение

Решение

zEEmperon, Вам нужен код на С или С++ ? потестируйте такой вариант
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
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    size_t size, count=0, max_count=0, imax=0;
    string s;
    cout << "String:\n";
    getline(cin, s);
    
    size=s.size();
    for (size_t i = 0; i < size; i++)
    {        
        if (isdigit(s[i])) count++;     
        if (!isdigit(s[i]) || i==size-1)
        {       
        if (count>max_count) {max_count=count; imax=i;}    
        count=0;
        }
        
    }
    
    if (imax==size-1) imax++;
    for (size_t i = imax-max_count; i < imax; i++)
    cout << s[i];
    cout << "\n";
 
system("pause");
return 0;
}
если таких подстрок несколько, вводится первая из них
1
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 26
13.10.2019, 14:32  [ТС] 4
zss, Спасибо именно отладчик мне помог. Суть была в том что счетчик цикла i перескакивал через ноль-терминатор ('\0') и попадал не в ту часть массива))
Yetty, писал программу на с++, но не используя класс string. Спасибо за отклик, ваш код работает, сейчас его буду разбирать)

Вот правильный и рабочий код (без использования класса string):
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 "pch.h"
#include <iostream>
 
 
using namespace std;
 
int main()
{
    
    char str[255], str1[255] = "\0", str2[255] = "\0";
 
    cout << "Enter text: ";
    cin.getline(str, 255);
 
    for (int i = 0,k,d; i < 255 && str[i] != '\0'; ) {
 
         k = 0;
         d = 0;
        if (isdigit(str[i])) {
            for (; ; k++) {
 
                
                if (!isdigit(str[i])) {
                    break;
                }
                str2[k] = str[i];
                i++;
                
 
            }
            str2[k] = '\0';
 
            if (strlen(str2) > strlen(str1)) {
                for ( ; d < k; ) {
                    str1[d] = str2[d];
                    d++;
                }
                
            }
            
        }
        else {
            i++;
        }
        
    }
    cout << atoi(str1);
}
0
13.10.2019, 14:32
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.10.2019, 14:32
Помогаю со студенческими работами здесь

Удаляет из строки самую длинную подстроку, состоящую из повторяющегося символа
При помощи класса StringBuilder удалить из строки самую длинную подстроку, состоящую из...

Удалить из строки самую длинную подстроку, состоящую из повторяющегося символа
Здравствуйте! Подскажите как можно решить данную задачку: Разработать программу, которая для...

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

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

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

В строке найти самую длинную подстроку
С клавиатуры водится строка,найти самую длинную подстроку, которая повторяется больше одного раза в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Блоги программистов
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­­­­­­­­­­­­­х­р­о­н­­н­­­ы­­й счётчик с управляющим сигналом зад
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru