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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
CityFix
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 5
#1

Указатели и строки - C++

24.06.2010, 05:00. Просмотров 526. Ответов 3
Метки нет (Все метки)

Здравствуйте! Помогите решить такую задачу
Найти в строке последовательности , состоящие из одного повтопяющегося символа, и заменить его на число символов и один символ, например мммммм - 5м
Реализовал вот так:

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
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
 
void Simvol(char *c)
 {
      int i,j,k,m; 
        for (i=0; c[i]!=0; i++) 
                {
                     if(c[i]!=' ' && c[i]==c[i+1]) 
                        {          
                for (j=i, k=1; c[j]==c[j+1]; k++, j++);                             if (k>=10) c[i++] = k/10 + '0';c[i++] = k%10+'0';
              for(j++, m=i+1; c[j]!=0; j++, m++) c[m]=c[j];
                      c[m]=0;
                       }
                }
}
 
 int main()
 {
 char m[80]="ccccccceeaa dfgdfg hhhhhhhh ttsvvvgggg zzzzzzzz kkkkkkkk sdrgbbjr";//Строка
 SetConsoleCP(1251); 
 SetConsoleOutputCP(1251); 
 Simvol(m);
 puts(m);
}
Подскажите как реализовать функцию используя указатели?

Добавлено через 11 часов 39 минут
Очень сильно надо, может кто помочь?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2010, 05:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указатели и строки (C++):

Указатели.Строки и указатели - C++
Вот условия ввода строки:Вводить и обрабатывать строки в цикле до тех пор пока первый символ не пробел Условия обработки строки: ...

Указатели и указатели на указатели, а также типы данных - C++
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно. Накачал литературы, буду изучать) Щас...

Строки и указатели с++ - C++
1. С клавиатуры вводится полный путь к файлу. Напишите программу, которая выделяет из этой строки имя файла Пример: ...

Указатели на строки - C++
Есть следующий код: class Strings // класс с указателями на строки (размер которого равен 8) { public: char* str1; ...

Указатели на строки - C++
Доброго всем времени суток! Не понимаю почему указатели на строки возвращают всю строку char может содержать только один символ в...

Указатели и строки - C++
1. В коде есть такой кусок: sc = stack.pop(); printf(&quot;#%s %d#&quot;, &amp;sc, sc); sc имеет тип unsigned int, понятно что там хранится...

3
Хохол
Эксперт С++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
24.06.2010, 05:26 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
char* compress(char *s)
{
    int len = strlen(s);
    char *res = (char*)malloc(len+1);
    int curLen = 0;
    int cnt = 1;
    for(int i = 0; i < len; i++)
        if(i == len-1 || s[i] != s[i+1])
        {
            if(cnt > 1)
                curLen += sprintf(res+curLen,"%d",cnt);
            curLen += sprintf(res+curLen,"%c",s[i]);
            cnt = 1;
        }
        else
            cnt++;
    res[curLen] = 0;
    return res;
}
0
CityFix
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 5
24.06.2010, 12:53  [ТС] #3
Цитата Сообщение от Хохол Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
char* compress(char *s)
{
    int len = strlen(s);
    char *res = (char*)malloc(len+1);
    int curLen = 0;
    int cnt = 1;
    for(int i = 0; i < len; i++)
        if(i == len-1 || s[i] != s[i+1])
        {
            if(cnt > 1)
                curLen += sprintf(res+curLen,"%d",cnt);
            curLen += sprintf(res+curLen,"%c",s[i]);
            cnt = 1;
        }
        else
            cnt++;
    res[curLen] = 0;
    return res;
}
Спасибо! Но немного не то, нужна реализация с помощью указаетелей используя операции ++ и --
0
Хохол
Эксперт С++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
24.06.2010, 13:08 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
char* compress(char *s)
{
    int len = strlen(s);
    char *res = (char*)malloc(len+1);
    char *ptr = res;
    int cnt = 1;
    for(int i = 0; i < len; i++)
        if(i == len-1 || s[i] != s[i+1])
        {
            if(cnt > 1)
                ptr += sprintf(ptr,"%d",cnt);
            ptr += sprintf(ptr,"%c",s[i]);
            cnt = 1;
        }
        else
            cnt++;
    *ptr = 0;
    return res;
}
Ну негде тут ++ и -- присобачить, и без них получается.
0
24.06.2010, 13:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2010, 13:08
Привет! Вот еще темы с ответами:

Указатели и строки - C++
Здравствуйте. Учу указатели (и строки); появилась куча неясных мне моментов, поэтому прошу разъяснения. 1) const char* obj...

указатели и строки? - C++
Люди помогите понять, ни как не дается это страшное слово указатель. Так в общем немного ясно, не понятно вот что: Считается что эти...

Строки и указатели - C++
Выполнить задание двумя способами используя индексы и используя указатели при работе со строками. Удалить в строке все буквы “b”,...

Строки и указатели в C++ - C++
Проверить правильность расположения в тексте круглых скобок (количество открывающихся и закрывающихся скобок должно совпадать). Пользуясь...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru