Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
8 / 7 / 1
Регистрация: 08.04.2021
Сообщений: 151

Сумма чисел в файле/конечный детерминированный автомат

12.02.2022, 10:35. Показов 1384. Ответов 7
Метки с++ (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Есть такая задачка. Ее нужно решить через конечный детерминированный автомат. Не очень поняла эту тему.
Буду благодарна если поможете разобраться.

Сумма чисел в файле
В файле могут быть записаны десятичные цифры и все, что угодно. Числом назовем последовательность цифр, идущих подряд (т.е. число всегда неотрицательно).

Вычислите сумму всех чисел, записанных в файле. В данной задаче удобно считывать данные посимвольно.

Примеры
входные данные
123
aaa456
1x2y3 4 5 6

выходные данные
600

еще есть такой код. Вроде рабочий, но система не принимает

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 <fstream>
#include <iostream>
#include <vector>
#include <cmath>
#include <string>
using namespace std;
 
bool itsal(char c) {
    if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) 
        return true;
    return false;
}
int itsnum(char c) {
    if (c >= '0' && c <= '9') {
        int b = c;
        return (b - 48);
    }
    return -1;
}
int num_from_string(string s) {
    int n = 0, k;
    for (int i = 0; i < s.size(); i++) {
        k = itsnum(s[i]);
        n += k * pow(10, s.size() - i - 1);
    }
    return n;
}
int main() {
    ifstream in("input.txt");
    char ch;
    string s;
    int sum = 0;
    if (in.is_open()) {
        while (!in.eof()) {
            ch = in.get();
            if (itsnum(ch) != -1) {
                s.push_back(ch);
            }
            else {
                sum += num_from_string(s);
                s.clear();
            }
        }
    }
    cout << sum;
    in.close();
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.02.2022, 10:35
Ответы с готовыми решениями:

Детерминированный конечный автомат
Всем привет,у меня такая проблема: Написал в билдере код,но не получается запустить в VS 10,никак не могу понять в чем же проблема. И кому...

Построить конечный автомат из вещественных чисел в 16-речной системе счисления
Здравствуйте,помогите разобраться с алгоритмом.нужно построить конечный автомат из вещественных чисел с целой и/или дробной частью в...

Детерминированный конечный распознаватель
Построить детерминированный конечный распознаватель для: последовательности целых чисел, разделенных запятыми, и заканчивающейся символом...

7
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
12.02.2022, 10:50
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
#include <iostream>
#include <fstream>
 
 
int main(){
    std::ifstream in("input.txt");
 
    std::noskipws(in);
 
    int result {};
    int current {};
 
    char c {};
    while (in >> c) {
        if (c >= '0' && c <= '9') {
            current = current * 10 + (c - '0');
        } else {
            result += current;
            current = 0;
        }
    }
    result += current;
 
    std::cout << result << std::endl;
 
}
0
Злостный нарушитель
 Аватар для Verevkin
10238 / 5667 / 1260
Регистрация: 12.03.2015
Сообщений: 26,261
12.02.2022, 10:55
Цитата Сообщение от alimaaa Посмотреть сообщение
Вычислите сумму всех чисел, записанных в файле. В данной задаче удобно считывать данные посимвольно.
Хреновая идея. Чо делать, если встретится последовательность цифр, которая, как число, не влезет в 64-битную переменную?
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
12.02.2022, 11:09
Цитата Сообщение от Verevkin Посмотреть сообщение
Чо делать, если встретится последовательность цифр, которая, как число, не влезет в 64-битную переменную?
Страдать, ящетаю.
0
Злостный нарушитель
 Аватар для Verevkin
10238 / 5667 / 1260
Регистрация: 12.03.2015
Сообщений: 26,261
12.02.2022, 11:11
Цитата Сообщение от lemegeton Посмотреть сообщение
Страдать, ящетаю.
Согласен.
0
8 / 7 / 1
Регистрация: 08.04.2021
Сообщений: 151
12.02.2022, 11:54  [ТС]
А как тогда?
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
12.02.2022, 12:00
Цитата Сообщение от alimaaa Посмотреть сообщение
А как тогда?
Мы с уважаемым Verevkin сошлись во мнении, что в ситуации, когда число превысит заложенный тип, придётся страдать.

В моём коде выше лучше поменять тип состояния на что-нибудь побольше.
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
#include <iostream>
#include <fstream>
 
 
int main(){
    std::ifstream in("input.txt");
 
    std::noskipws(in);
 
    std::uint64_t result {};
    std::uint64_t current {};
 
    char c {};
    while (in >> c) {
        if (c >= '0' && c <= '9') {
            current = current * 10 + (c - '0');
        } else {
            result += current;
            current = 0;
        }
    }
    result += current;
 
    std::cout << result << std::endl;
 
}
Если хотите еще пострадать, замените простую математику на "длинную".

А вообще, преподаватель и так примет.
0
Злостный нарушитель
 Аватар для Verevkin
10238 / 5667 / 1260
Регистрация: 12.03.2015
Сообщений: 26,261
12.02.2022, 12:50
Цитата Сообщение от lemegeton Посмотреть сообщение
замените простую математику на "длинную".
Для исчерпывающего решения задачи (штоп препод-казёл не доковырялся).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.02.2022, 12:50
Помогаю со студенческими работами здесь

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

Детерминированный конечный автомат
Построить конечный автомат, реализующий распознавание целочисленной 10 константы языка C: G({0,1,2,3,4,5,6,7,8,9,-,+},{&lt;число&gt;,...

Детерминированный конечный автомат
Имеется регулярное выражение, нужно построить по нему ДКА

Построить конечный детерминированный автомат
Привет всем помогите построить точнее нарисовать нетдетермениванный и детерменированный автомат по следующему правилу, работаю и некогда...

Построить конечный детерминированный автомат
Построить конечный детерминированный автомат, который подает на выходе единицу тогда, когда первым на вход была подана строка 02121;...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru