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

Свертка повторяющихся подстрок по следующим правилам

11.04.2012, 03:40. Показов 1755. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, не могу понять задание.
В заданной строке символов выполнить свертку повторяющихся подстрок по следующим правилам: а) несколько последовательных повторений одной и той же подстроки заменяются так: хххх на 4(х), уbcbcх на у2(bc)х; б) это правило можно применять дважды, например: 4(х)b4(х)b заменяется на 4(4(х)b).

Добавлено через 11 часов 24 минуты
Может у кого-нибудь подобное задание есть?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.04.2012, 03:40
Ответы с готовыми решениями:

Лифт работает по следующим правилам
Лифт работает по следующим правилам: 1.Лифт едет с 1 этажа на все этажи кроме 2,3,4. 2.При спуске вниз лифт останавливается на всех...

Получить двумерный массив по следующим правилам
Получить двумерный массив по следующим правилам: элементы главной диагонали равны 1, ниже главной диагонали - 0, выше - сумме своих...

Сформировать новый массив Zm по следующим правилам
Даны 2 одномерных массива Xn и Yn. Сформировать новый массив Zm по следующим правилам: если Xi>i и Yi>i то Zk=Xi+Yi. Отсортировать...

3
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
11.04.2012, 06:00
MK_9, А что не понятно? Есть текст, его нужно сделать меньше, но что бы потом можно было его восстановить. Например "qqqqqqqq" занимает 8 байт, что мешает нам написать "q" один раз и просто поставить отметку, что его нужно повторить 8 раз, то есть получится "8(q)" , а это уже 4 байта, сжатие в два раза ) . Однако повторения могут быть не одного символа а нескольких, например "qwqwqwqwqwqw", так же пишем 6(qw).
В итоге получаешь сжатый текст, но что мешает по этому тексту пройтись еще раз, ведь могут появиться новые повторяющиеся строки....и так, пока возможности для сжатия не исчерпаются.
0
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 11
15.04.2012, 12:49  [ТС]
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
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
 
 
 void main(void)
{
    setlocale(0,"RUS");
    char h;
    cout <<"Здравствуйте"<< endl
        <<"Желаете начать работу, y/n? ";
    cin >> h;
    while (h!='n')
    {   
     int i=0, j=0;
     char *st = new char [512];
     char *st1 = new char [512];
     char *st2 = new char [512];
     cout <<"Введите строку: ";
     cin.get();
     cin.getline(st,255);
     int n=strlen(st);
 
      while (i < n)
      {
           if (st[i] == 'x' && st[i+1] == 'x' && st[i+2] == 'x' && st[i+3] == 'x')
           {
              st1[j] = '4';
              st1[j+1] = '(';
              st1[j+2] = 'x';
              st1[j+3] = ')';
              j = j+4;
              i = i+4;
           }
           if (st[i] == 'y' && st[i+1] == 'b' && st[i+2] == 'c' && st[i+3] == 'b'&& st[i+4] == 'c'&& st[i+5] == 'x') 
           {
              st1[j] = 'y';
              st1[j+1] = '2';
              st1[j+2] = '(';
              st1[j+3] = 'b';
              st1[j+4] = 'c';
              st1[j+5] = ')';
              st1[j+6] = 'x';
              j = j+7;
              i = i+7;
           }
         else
           {
              st1[j] = st[i];
              j=j+1;
              i=i+1;
           }
      }
      
          cout <<("Полученная строка:\n");
      st1[n]='\0';
          cout << st1 << endl;
      char t;
      cout <<"Применить правило дважды, y/n? ";
      cin >> t;
    while (t!='n')
    { ????
        if (st1[i] == '4' && st1[i+1] == '(' && st1[i+2] == 'x' && st1[i+3] == ')'&& st1[i+4] == 'b' && st1[i+5] == '4' && st1[i+6] == '(' && st1[i+7] == 'x' && st[i+8] == ')' && st1[i+9] == 'b') 
           {
              st2[j] = '4';
              st2[j+1] = '(';
              st2[j+2] = '4';
              st2[j+3] = '(';
              st2[j+4] = 'x';
              st2[j+5] = ')';
              st2[j+6] = 'b';
              st2[j+7] = ')';
              j = j+8;
              i = i+10;
           }
         else
           {
              st1[j] = st[i];
              j=j+1;
              i=i+1;
    }
    }
      cout << "Желаете повторить работу, y/n? ";
        cin >> h;
    }
}
Как повторно применить 4(х)b4(х)b заменяется на 4(4(х)b) ?
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
15.04.2012, 14:30
4(х)b4(х)b заменяется на 2(4(х)b) а у тебя в задании это опечатка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.04.2012, 14:30
Помогаю со студенческими работами здесь

Поиск повторяющихся подстрок в строке
Дана строка символов например &quot;авсавсавс&quot;. Необходимо найти повторение &quot;авс&quot; и указать сколько таких повторений: 3авс Есть ли метод,...

Замена повторяющихся подстрок из массива в ячейке
Добрый день! По старой памяти и форуму сделал макрос. Он находит повторяющиеся значения ячеек в первом столбце и дополняет значения ячеек...

Создайте двумерный массив [n][m] и заполните его по следующим правилам:
Даны два числа n и m. Создайте двумерный массив и заполните его по следующим правилам: Числа, стоящие в строке 0 или в столбце 0 равны 1...

Создайте двумерный массив [n][m] и заполните его по следующим правилам
Здравствуйте. Помогите пожалуйста неумехе. Плохо понимаю Pascal :( Задания: 3) Даны два числа n и m. Создайте двумерный массив...

По результатам сдачи экзаменов в сессию решено назначить стипендию по следующим правилам
(условие этой сделанной задачи): При решении задачи поступим следующим образом. Вычислим максимальную и минимальную из оценок,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru