Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.61/64: Рейтинг темы: голосов - 64, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 09.03.2019
Сообщений: 15

Увеличить размер Char

05.05.2019, 01:32. Показов 12680. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа ищет слова в тексте. Помогите сделать так чтобы можно было записать в тексте больше символов, в моем случае если пишу в текстовом документе "Text" большой текст то программа не видит его, ВВОДИТЬ только английскими буквами
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <iostream>
#include <cstring>
#include <fstream>
#include <windows.h>
#include <string>
#include <cmath>
 
using namespace std;
 
int Search(char *Str, char *Key){
 
    int  Strl, Keyl; 
    int Res = -1;
    
    Strl = strlen(Str);
    Keyl = strlen(Key);
    
    if (Strl == 0){
        cout << "Ошибка! Строка не найдена!" << endl; 
    }
    
    else if (Keyl == 0) {
        cout << "Ошибка! Ключ не найден!" << endl; 
    }
    else {
        
            int  I, Last;
            int Table[256]; // Таблица смещений
            
            for (I = 0; I < 256; I++){
                Table[I] = Keyl; // Заполнение таблицы
            }
            
            for (I = Keyl - 1; I >= 0; I--){
                
                if (Table[(short)(Key[I])] == Keyl){
                    Table[(short)(Key[I])] = Keyl - I - 1; // Заполнение таблицы ASCI
                }
                
            }
            
            Last = Keyl - 1; 
            while ( Last < Strl ){
                
                if (Key[Keyl - 1] != Str[Last])
                    Last = Last + Table[(short)(Str[Last])];
                else {
                    for (I = Keyl - 2; I >= 0; I--){
                    
                        if (Key[I] != Str[Last - Keyl + I + 1]){ 
                        
                            Last += Table[(short)(Str[Last - Keyl + I + 1])] - 1;
                            break;
                        }
                        
                        else {
                            if (I == 0)
                                return Last - Keyl + 1;
                        }
                    }
                }
            }
    }
    
    return Res;
}
 
int main(){
    
    setlocale (LC_ALL, "Rus");
    //SetConsoleCP(1251);
    //SetConsoleOutputCP(1251);
    
    short N, I = 1; 
    char Str[256];
    char Key[256];
    int Arr[256];
    int Arr_key[256];
    int Razn;
    
    ifstream in ("Text.txt");
    
    //in >> Str;
    //cout << Str << endl;
    in.getline(Str, 256);
    
    
    cout << Str << endl;
    int Lenght = strlen(Str);
    
    for (int I = 0; I < Lenght; I++){
        
        Arr[I] = Str[I]; 
        //cout << Arr[I];
        Razn = Arr[I] + 32;
        Arr[I] = Razn + 160;
        
        if (Arr[I] > 175){
            Arr[I] = Arr[I] + 48;
        }
        
        cout << "[" << Str[I] << "] = " << Arr[I] << endl;
    }
    
    
    cout << "Введите ключевое слово поиска: "; cin.getline(Key, 256);
    int Lenght_key = strlen(Key);
    for (int I = 0; I < Lenght_key; I++){
        
        Arr_key[I] = Key[I]; 
        //cout << Arr[I];
        Razn = Arr_key[I] + 32;
        Arr_key[I] = Razn + 160;
        
        if (Arr_key[I] > 175){
            Arr_key[I] = Arr_key[I] + 48;
        }
        
        cout << "[" << Key[I] << "] = " << Arr_key[I] << endl;
    }
    cout << endl << endl;
    
    do{
    
        if (Search(Str, Key) == -1){
 
            break;
        }
        else {
        
            N = Search(Str, Key);
            cout << "Совпадение " << I++ << " : Слово начинается с индекса " << N << endl;
            
            for (int I = 0; I < (N + strlen(Key)); I++){
            
                Str[I] = ' ';
            }
        }
    }   while (N != -1);
    
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.05.2019, 01:32
Ответы с готовыми решениями:

Увеличить размер выводимого текста (увеличить буквы) функции outtextxy
Здравствуйте. Я вывожу текст с помощью функции Функция outtextxy. Можно ли как-нибудь увеличить размер выводимого текста? (увеличить буквы)

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

Как увеличить размер стека?
Есть быстрая сортировка - но выдает ошибку Stack overflow на массиве 100,7 Но работает на 100-4-0-1-2-3 В чем проблема, подскажите...

21
0 / 0 / 0
Регистрация: 09.03.2019
Сообщений: 15
10.05.2019, 01:24  [ТС]
Студворк — интернет-сервис помощи студентам
XLAT, не получается, можете пожалуйста сделать это в моем коде?
0
Just Do It!
 Аватар для XLAT
4220 / 2685 / 656
Регистрация: 23.09.2014
Сообщений: 9,241
Записей в блоге: 3
10.05.2019, 06:29
Лучший ответ Сообщение было отмечено Fost123 как решение

Решение

Цитата Сообщение от Fost123 Посмотреть сообщение
не получается, можете пожалуйста сделать это в моем коде?
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <iostream>
#include <cstring>
#include <fstream>
 
using namespace std;
 
int Search(char *Str, char *Key)
{
    int  Strl, Keyl;
    int Res = -1;
 
    Strl = strlen(Str);
    Keyl = strlen(Key);
 
    if (Strl == 0)
    {   cout << "Ошибка! Строка не найдена!" << endl;
    }
    else if (Keyl == 0)
    {   cout << "Ошибка! Ключ не найден!" << endl;
    }
    else
    {
        int  I, Last;
        int Table[256]; // Таблица смещений
 
        for (I = 0; I < 256; I++)
        {   Table[I] = Keyl; // Заполнение таблицы
        }
 
        for (I = Keyl - 1; I >= 0; I--)
        {
            if (Table[(short)(Key[I])] == Keyl)
            {   Table[(short)(Key[I])] = Keyl - I - 1; // Заполнение таблицы ASCI
            }
        }
 
        Last = Keyl - 1;
        while ( Last < Strl )
        {
            if (Key[Keyl - 1] != Str[Last])
                Last = Last + Table[(short)(Str[Last])];
            else
            {   for (I = Keyl - 2; I >= 0; I--)
                {
                    if (Key[I] != Str[Last - Keyl + I + 1])
                    {
                        Last += Table[(short)(Str[Last - Keyl + I + 1])] - 1;
                        break;
                    }
                    else
                    {   if (I == 0) return Last - Keyl + 1;
                    }
                }
            }
        }
    }
    return Res;
}
 
int main()
{
    setlocale (LC_ALL, "Rus");
    //SetConsoleCP(1251);
    //SetConsoleOutputCP(1251);
 
    short N, I = 1;
    
    const int BUFMAX = 0xFFFFF;
    char Str[BUFMAX];
    char Key[256];
    int Arr[256];
    int Arr_key[256];
    int Razn;
 
    ifstream in ("Text.txt");
    
    ///-------------------------|
    /// Хватит ли буфера?       |
    ///-------------------------|
    in.seekg (0, std::ios::end);
    if(in.tellg() > BUFMAX-1)
    {   std::cout << "Ошибка: недостаточный размер BUFMAX буфера Str[]!";
        return 0;
    }
    in.seekg (0, std::ios::beg); // Вернули в начало: готовим читать сей файл.
        
    //in >> Str;
    //cout << Str << endl;
    in.getline(Str, BUFMAX, '\0');
 
    cout << Str << endl;
    int Lenght = strlen(Str);
 
    for (int I = 0; I < Lenght; I++)
    {
        Arr[I] = Str[I];
        //cout << Arr[I];
        Razn = Arr[I] + 32;
        Arr[I] = Razn + 160;
 
        if (Arr[I] > 175)
        {   Arr[I] = Arr[I] + 48;
        }
 
        cout << "[" << Str[I] << "] = " << Arr[I] << endl;
    }
 
    cout << "Введите ключевое слово поиска: ";
    cin.getline(Key, 256);
    int Lenght_key = strlen(Key);
    for (int I = 0; I < Lenght_key; I++)
    {
        Arr_key[I] = Key[I];
        //cout << Arr[I];
        Razn = Arr_key[I] + 32;
        Arr_key[I] = Razn + 160;
 
        if (Arr_key[I] > 175)
        {   Arr_key[I] = Arr_key[I] + 48;
        }
 
        cout << "[" << Key[I] << "] = " << Arr_key[I] << endl;
    }
    cout << endl << endl;
 
    do
    {   if (Search(Str, Key) == -1)
        {   break;
        }
        else
        {   N = Search(Str, Key);
            cout << "Совпадение " << I++ << " : Слово начинается с индекса " << N << endl;
 
            for (int I = 0; I < (N + strlen(Key)); I++)
            {   Str[I] = ' ';
            }
        }
    }
    while (N != -1);
 
    std::cin.get();
    return 0;
}
Итак, в данном коде размер буфера позволит разместить 1 Мегабайт текста.
Если будет не хватать, то программа индицирует это вам ошибкой.
Увеличьте BUFMAX, или сделайте загрузку текста в переменную std::string

Возможен случай, когда вам захочется сделать поиск в текстовом файле
гигантского размера, занимающего весь ваш жесткий диск. Стринги тут уже не помогут.
Тогда читайте построчно(одной или пачками) и делайте поиск слова в этих прочитанных строках.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.05.2019, 06:29

Как увеличить размер программы?
Здравствуйте интересует один вопрос, есть простенькая программа не важно какая, имеющая размер 6мб, как или с помощью чего можно увеличить...

Увеличить указатель на размер адресуемой им структуры
Помогите написать программу : Увеличить указатель на размер адресуемой им структуры

Как увеличить размер консольного окна
Хочу увеличить ширину консольного окна но не пойму как это можно сделать к примеру для того чтобы поменять цвет шрифта в консоли...

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

Увеличить указатель на размер адресуемой им структуры
Увеличить указатель на размер адресуемой им структуры. Буду очень признателен за помощь.


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru