Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 37
1

Конечные автоматы

11.03.2015, 21:01. Показов 1300. Ответов 4
Метки нет (Все метки)

есть код для вычисления количества строк в тексте, все вроде ок, но при нажатии на кнопку выдает ошибку
ThrowIfOutOfRange(idx); // Should Range-checking be optional to avoid overhead

Сам код:
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
//---------------------------------------------------------------------------
 #include <iostream>
#include <vcl.h>
#include <string>
#pragma hdrstop
 #include <stdlib.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     TStringList *list = new TStringList;
{
int word;
    enum States
    {
        State_Start,
        State_Number,
        State_Word,
        State_Skip
    };
 
    States state = State_Start;
 
    String str=Memo1->Text;
         int length = str.Length();
    for (int i = 0; i != length; ++i)
    {
        const char current = str[i];
 
        switch (state)
        {
        case State_Start:
            if (std::isdigit(current))
            {
                state = State_Number;
            }
            else if (std::isalpha(current))
            {
                state = State_Word;
            }
            break;
        case State_Number:
            if (std::isspace(current))
            {
                word++;
                state = State_Start;
            }
            else if (!std::isdigit(current))
            {
                state = State_Skip;
            }
            break;
        case State_Word:
            if (std::isspace(current))
            {
                 word++;
                state = State_Start;
            }
            else if (!std::isalpha(current))
            {
                state = State_Skip;
            }
            break;
        case State_Skip:
            if (std::isspace(current))
            {
                state = State_Start;
            }
            break;
        }
    }
 
    if (state == State_Number)
    {
        word++;
    }
    else if (state == State_Word)
    {
        word++;
    }
}
}
 
//---------------------------------------------------------------------------
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2015, 21:01
Ответы с готовыми решениями:

Асинхронные автоматы
Ребят помогите найти ошибку в коде. AnsiString Anssinhr1(AnsiString S) { enum conditions...

Автоматы синхронные и асинхонные
Синхронный автомат программы не запускаются. по мойму я что-то с дужками напутала. помогите...

Не выводятся конечные значения в график
Пытаюсь написать программу по интегрированию ОДУ методом Адамса. Значения X и Y отказываются...

Для заданного n построить (разместить на экране) все n-конечные звёзды
Очень нужна помощь с задачей по С++Builder, помогите пожалуйста составить код программы! Для...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
4
236 / 194 / 21
Регистрация: 04.06.2014
Сообщений: 1,313
11.03.2015, 21:11 2
Цитата Сообщение от Prog_L Посмотреть сообщение
выдает ошибку
Укажите хотя-бы номер строки, на которую ссылается ошибка. Блин, лениво Вашу прогу включать в проекты.
0
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 37
11.03.2015, 21:16  [ТС] 3
Вот
0
Миниатюры
Конечные автоматы   Конечные автоматы  
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30907 / 20222 / 7883
Регистрация: 22.10.2011
Сообщений: 35,100
Записей в блоге: 6
11.03.2015, 21:24 4
Лучший ответ Сообщение было отмечено Prog_L как решение

Решение

C++
1
2
3
4
5
    String str=Memo1->Text; // String ...
    int length = str.Length();
    for (int i = 0; i != length; ++i) // цикл начинается с 0 ...
    {
        const char current = str[i]; // Нулевого символа в String нет, индексация начинается с 1...
, у тебя банальный вылет за пределы строки...

Ну, и word (23 строка) обнулять надо, а то будешь получать непонятные результаты...
1
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 37
11.03.2015, 21:37  [ТС] 5
Спасибо)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.03.2015, 21:37

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

Конечные автоматы JS
Привет. Необходимо реализовать такой алгоритм программы. У нас есть како-то массив правил const...

Конечные автоматы
в Pascal строки ограничены апострофами, а комментарии - символами {}, при этом скобка {,...

Конечные автоматы!?!?!?!?
Ребят тупая задача сложнность 11 % а условие тупое не понятное кто может объяснить и условие и...

Конечные автоматы
Помогите....требуется вычислить среднюю длину слова с точностью 2 знака после запятой. &lt; a1b abc...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.