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

Закодировать входную строку алгоритмом сокращения повторяющихся символов. - C++

Восстановить пароль Регистрация
 
Demiann
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 8
22.02.2010, 12:41     Закодировать входную строку алгоритмом сокращения повторяющихся символов. #1
Закодировать входную строку алгоритмом сокращения повторяющихся символов. Каждая последовательность одинаковых символов длиной более 4 должна быть представлена в виде строки *<количество символов>*<символ>. Например, для строки 'AAAbCxLLLLL2300fffffff' должно быть выведено 'AAAbCx*5*L2300*7*f'. Во входной строке не может встречаться символ '*'.

Добавлено через 33 секунды
Помгите если не сложно!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2010, 12:41     Закодировать входную строку алгоритмом сокращения повторяющихся символов.
Посмотрите здесь:

C++ замена повторяющихся символов
Удаление повторяющихся символов C++
C++ Удаление повторяющихся символов
Указать индексы повторяющихся символов C++
Записать строку в 1 файл, сделать там проверку и найти слова, в которых нет повторяющихся символов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Demiann
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 8
23.02.2010, 17:24  [ТС]     Закодировать входную строку алгоритмом сокращения повторяющихся символов. #2
А есть у кого-то,что-то похожее? Срочно!!!!!
unick12345
1295 / 986 / 51
Регистрация: 27.03.2009
Сообщений: 3,589
23.02.2010, 17:55     Закодировать входную строку алгоритмом сокращения повторяющихся символов. #3
у меня примерно получилось но на delphi. если хочешь переделай на C++
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var s,k:string;i,j:integer;
begin
s:=edit1.Text;
k:='';
j:=1;
i:=2;
while length(s)>0 do
if (s[i]=s[i-1]) and (j<4) then
begin
inc(j);
inc(i);
end
else
begin
if j<4 then
for j:=1 to i-1 do
k:=k+s[j]
else
k:=k+'*';
delete(s,1,i-1);
i:=2;
j:=1;
end;
edit2.Text:=k;
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.02.2010, 19:31     Закодировать входную строку алгоритмом сокращения повторяющихся символов. #4
Корявенько получилось, но работает:
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
/*
*   Каждая последовательность одинаковых символов длиной более 4 должна быть представлена 
*   в виде строки *<количество символов>*<символ>. Например, для строки 'AAAbCxLLLLL2300fffffff' 
*   должно быть выведено 'AAAbCx*5*L2300*7*f'. Во входной строке не может встречаться символ '*'.
*/
    
#define MAX_STR 128
#define MAX_SAME 4
    
int main(void){
    char str[MAX_STR], buf[MAX_STR], res[MAX_STR], tmp[MAX_STR], *pStr, *pBuf;
    int cnt;
    
    while ( 1 ){
        printf("String: ");
        if ( !fgets(str, MAX_STR, stdin) )
            exit(1);
        if ( pStr = strrchr(str, '\n') )
            *pStr = '\0';
        if ( !*str )
            break;
        
        pStr = str;
        pBuf = buf;
        *pBuf = *pStr;
        *res = '\0';
 
        for ( ++pStr; *pStr; ++pStr ) {
            if ( *pBuf == *pStr )
                *++pBuf = *pStr;
            else {
                cnt = pBuf - buf + 1;
                if ( cnt > MAX_SAME ){
                    sprintf(tmp, "*%d*%c", cnt, *pBuf);
                    strcat(res, tmp);
                }
                else {
                    *++pBuf = '\0';
                    strcat(res, buf);
                }
                pBuf = buf;
                *pBuf = *pStr;
            }
        }
        cnt = pBuf - buf + 1;
        if ( cnt > MAX_SAME ){
            sprintf(tmp, "*%d*%c", cnt, *pBuf);
            strcat(res, tmp);
        }
        else {
            *++pBuf = '\0';
            strcat(res, buf);
        }
        printf("Encoded: %s\n", res);
    }
    
    exit(0);
}
Demiann
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 8
23.02.2010, 19:33  [ТС]     Закодировать входную строку алгоритмом сокращения повторяющихся символов. #5
easybudda!!! Спасибо большое! таких бы людей побольше!
Yandex
Объявления
23.02.2010, 19:33     Закодировать входную строку алгоритмом сокращения повторяющихся символов.
Ответ Создать тему
Опции темы

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