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

Редактор - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задана последовательность из n чисел. Найти количество чисел больше своего номера http://www.cyberforum.ru/cpp-beginners/thread103216.html
заданая последовательность из n чисел: а(1),a(2)...a(n). найти количество чисел больше своего номера...напешите полностью листинг пожалуйста
C++ Microsoft Visual C++ 1.52 Добрый день, не знал куда запостить поэтому запостил сюда, нужно тут обработать напильником Truecrypt, в нем такие требования Requirements for Building TrueCrypt for Windows: ------------------------------------------------ - Microsoft Visual C++ 2008 SP1 (Professional Edition or compatible) - Microsoft Visual C++ 1.52 (available from MSDN Subscriber Downloads) - Microsoft Windows SDK... http://www.cyberforum.ru/cpp-beginners/thread103214.html
Хитрый fstream C++
Привет всем! Вот есть код, казалось бы без ошибок... #include <windows.h> #include <fstream> #include <vector> #include <string> #include <stdio.h> using namespace std;
Ввод из файла в массив C++
Приветствую. Вопрос, конечно, проще некуда... но всё же. Как организовать ввод из файла чисел в массив. В бэйсике, если память не изменяет, там всё просто и числа в файле надо через пробел писать. Хотелось бы это осуществить в С.
C++ Как исключить из цикла числа содержащиеся в массиве http://www.cyberforum.ru/cpp-beginners/thread103186.html
Есть массив исключений Int massiv={0};В нем каждый раз разное количество элементов которые больше нуля. Нужно составить условие, при котором если число больше нуля и входит в массив исключений , то выполняется некое условие. Я написал код , когда сразу известно сколько элементов в массиве больше нуля Скажем таких элементов два for(i=1; i<52; i++){ if(i==massiv|| i==massiv){ break;} }Но...
C++ Модули.. задание Тема- Стандартные модули и модульная структура приложений. Кто поможет - мегареспект. Самым бы простейшим способом.. Составить алгоритм и программу, которые составляют общий перечень необходимых марок машин для n фермерских хозяйств с указанием их количеств. Причем каждое фермерское хозяйство представило свой перечень, состоящий из m машин разных наименований (марок) и потребность в каждой из... подробнее

Показать сообщение отдельно
Rakaddar
0 / 0 / 0
Регистрация: 23.03.2009
Сообщений: 14

Редактор - C++

11.03.2010, 12:40. Просмотров 844. Ответов 4
Метки (Все метки)

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

Редактор
(Время: 1 сек. Память: 16 Мб Сложность: 39%)

Немногие знают, что первые версии текстового редактора из предыдущей задачи были написаны в России программистом Колей. Для этого он несколько месяцев почти не выходил из подвала, где стояли только диван и компьютер.

Вот одна из проблем, с которыми столкнулся Коля в те времена. Во время работы пользователь набирает какой-то текст, а так же может его редактировать. При этом, даже если итоговый результат полностью помещается на экран, в процессе работы отдельные строки могут иметь слишком большую длину. Мы не будем просить вас повторить Колин подвиг и заново написать редактор. Определите, какой максимальной длины строка получалась в течение набора текста, если вам известно, какие клавиши и в каком порядке нажимал пользователь.
Входные данные

Во входном файле INPUT.TXT записана строка из различных символов - последовательность кнопок на клавиатуре, которые нажимал пользователь. Переводы строк заменены на символ '\'. Первые версии редактора поддерживали три управляющие команды, которые закодированы следующим образом:
'<' - удаление предыдущего символа (если курсор находится в начале строки, и эта строка не первая, то удаляется предшествующий перевод строки);
'^' - перемещение в конец предыдущей строки (игнорируется, если курсор находится на первой строке);
'|' - перемещение в конец следующей строки (игнорируется, если курсор находится на последней строке).

Все остальные символы, содержащиеся в файле, имеют коды от 32 (пробел) и выше и должны пониматься как есть. Число нажатий клавиш не превосходит 105.
Выходные данные

В выходной файл OUTPUT.TXT выведите одно целое число - максимальную длину строки, которая была достигнута в течение работы редактора.
Примеры
№ INPUT.TXT OUTPUT.TXT
1 Hello, World???<<<! 15
2 Hello, World?\This is^<!!!| a sample. 17

мой код :

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
#include <iostream>
 
using namespace std;
 
int a[1000009] = {0},pre[1000009],next[1000009], n = 1, i, c = 0, m = 0;
char s[1000009];
 
int main()
{
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
 
    gets(s);
 
    pre[0] = 0;
    next[0] = 0;
 
    for(i = 0; i < strlen(s); i++)
    {
        if( s[i] == '\\' )
        {
            if(next[c] == c)next[n] = n;
            else
            {
                next[n] = next[c];
                pre[next[c]] = n;
            }
            next[c] = n;
            pre[n] = c;
            c = next[c];
            n++;
        }
        else if( s[i] == '<' )
        {
            if(a[c])a[c]--;
            else if(pre[c] != c)
            {
                next[pre[c]] = next[c];
                if(next[c]!=c)pre[next[c]] = pre[c];
                c = pre[c];
            }
        }
        else if( s[i] == '^' )
            c = pre[c];
 
        else if( s[i] == '|' )
            c = next[c];
 
        else a[c]++;
        m = max(m,a[c]);
    }
    cout << m;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru