Форум программистов, компьютерный форум CyberForum.ru

Однострочный редактор - C++

Восстановить пароль Регистрация
 
Errantem
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 13
09.11.2012, 22:13     Однострочный редактор #1
Текстовый редактор OLE (One-Line Editor) работает с текстом, состоящим ровно из одной строки строчных латинских букв. Редактор поддерживает следующие команды, длиной в один символ каждая:


L -- переместить курсор на 1 символ влево


R -- переместить курсор на 1 символ вправо


X -- удалить символ справа от позиции курсора


строчная латинская буква -- вставить справа от текущей позиции курсора указанную букву, переместить курсор на один символ вправо

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

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

Длина исходной строки находится в диапазоне от 1 до 1000000 символов. Длина строки команд находится в диапазоне от 1 до 100000 символов.

0 <= p <= длина исходной строки.
Исходные данные

Входной файл состоит из 3 строк. В первой строке содержится позиция курсора p, (0 - курсор перед первым символом, 1 - после первого перед вторым, и т.д.) во второй строке - начальное состояние строки редактора, в третьей - последовательность команд.
Результат

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

Добавлено через 52 минуты
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
#include <iostream>
#include <list>
#include <vector>
#include <string>
int main ()
{ 
 
 std::list<char> text;
 
 std::list<char>::iterator it;
 
 std::vector<char> mes (1000001);
 
 unsigned int loc_cur=0;
 
 std::cin>>loc_cur;
 
 std::cin.get();
 
 std::cin.getline (&mes[0],1000001);
 
 for (unsigned int i=0;mes[i];i++)
 {
 text.push_back (mes[i]);
 }
 
 mes.clear ();
 
 std::vector<char> cmd (100001);
 
 std::cin.getline (&cmd[0],100001);
 
 
 if (!(loc_cur<=text.size()))
 {
 loc_cur=0;
 }
 
 it=text.begin ();
 
 for (unsigned  int y=0;y<loc_cur;y++)
 {
 it++;
 }
 
 
 
 
 for (int i=0;cmd[i];i++)
 {
  
 if (text.empty ())      
 {
 it=text.begin();     
 }
 
 
 
 if (cmd[i]=='a')
 {
 text.insert (it,cmd[++i]); 
 
 }
 
 
 else if  (cmd[i]=='L')
 { 
 if (it!=text.begin())
 {
 it--; 
 }
 }
 
 else if (cmd[i]== 'R')
 {
 if (it!=text.end())
 {
 it++; 
 }
 }
 
 else if (cmd[i]== 'X')
 { 
 if (it!=text.end ())
 {
 it=text.erase (it);  
 }
 }
 
 else
 {
 text.insert (it,cmd[i]); 
 }
 
 }
 
 while (text.size ()>0)
 {
 std::cout << text.front();
 
 text.pop_front ();
 }
 
 
 return 0;
}
скажите пожалуйста что не так с кодом, пишет ошибка выполнения
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2012, 22:13     Однострочный редактор
Посмотрите здесь:

C++ Редактор
Hex редактор C++
визуальный редактор С++ C++
C++ Visual C++, редактор.
C++ редактор текста
C++ Графический редактор
C++ Однострочный калькулятор
C++ Графический редактор

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 07:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru