Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2011, 14:46   #1
VolPuch
Новичок
Джуниор
 
Регистрация: 09.07.2011
Сообщений: 4
По умолчанию C++ Замена в строке множественных последовательных вхождений символа на один.

Я написал код который в строке находит последовательные одинаковые символы и заменяет их на один. Как мне модифицировать этот код чтобы заменялся только один символ, удовлетворяющий условию.
Код:
#include <iostream>

using namespace std;

int main() {
    char *str = new char[100];
    cin>>str;

    int i;
    int n;

    for (n = 0; str[n] != '\0'; n++);

    char res[100];
    int j = 0;

    for (i = 0; i <= n; i++) {
        if (str[i+1] != str[i]) {
            res[j] = str[i];
            j++;
        }
    }
    cout<<res;
    return 0;
}
VolPuch вне форума Ответить с цитированием
Старый 09.07.2011, 15:44   #2
Alkagolik
Пользователь
 
Аватар для Alkagolik
 
Регистрация: 03.08.2009
Сообщений: 77
По умолчанию

Код:
for (int i=0; str[i]!='\0'; i++){
   if (str[i]==str[i+1]){
      for (int j=i; str[j]!='\0'; j++)
         str[j]=str[j+1];
   }
}
Alkagolik вне форума Ответить с цитированием
Старый 09.07.2011, 15:56   #3
VolPuch
Новичок
Джуниор
 
Регистрация: 09.07.2011
Сообщений: 4
По умолчанию

мне нужно чтобы когда я ввожу aaaassssdfg и критерий s у меня получался результат aaaasdfg, т.е. заменять последовательность только того символа, который задали в критерии.
VolPuch вне форума Ответить с цитированием
Старый 09.07.2011, 16:15   #4
Alkagolik
Пользователь
 
Аватар для Alkagolik
 
Регистрация: 03.08.2009
Сообщений: 77
По умолчанию

Цитата:
Сообщение от VolPuch Посмотреть сообщение
мне нужно чтобы когда я ввожу aaaassssdfg и критерий s у меня получался результат aaaasdfg, т.е. заменять последовательность только того символа, который задали в критерии.
Так в чем проблема? принцип Вам показан, лепите из кода что Вам угодно.
Alkagolik вне форума Ответить с цитированием
Старый 09.07.2011, 16:42   #5
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Ну что это такое, опять char[]...
Код:
#include <iostream>
#include <string>

using namespace std;

int main()
{
	string str;
	cin >> str;

	string res;
	char key = 's';

	for (string::const_iterator iter = str.begin(); iter != str.end(); ++iter)
	{
		while ((  (iter + 1) != str.end()  ) &&
		       (  *iter == *(iter + 1)     ) &&
		       (  *iter == key             ))
			++iter;
		res.push_back(*iter);
	}

	cout << res;
	return 0;
}
Ищете информацию по C++?
cplusplus.com

Последний раз редактировалось Сtrl; 09.07.2011 в 16:56. Причина: Форматирование кода (индентация)
Сtrl вне форума Ответить с цитированием
Старый 09.07.2011, 17:24   #6
VolPuch
Новичок
Джуниор
 
Регистрация: 09.07.2011
Сообщений: 4
По умолчанию

string это хорошо, но эта задача мне нужно сделать без использования string.h
VolPuch вне форума Ответить с цитированием
Старый 09.07.2011, 17:40   #7
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
Сообщение от VolPuch Посмотреть сообщение
string это хорошо, но эта задача мне нужно сделать без использования string.h
Я его и не использую. Все-таки <string> и <string.h> - совершенно разные библиотеки.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 09.07.2011, 18:08   #8
Alkagolik
Пользователь
 
Аватар для Alkagolik
 
Регистрация: 03.08.2009
Сообщений: 77
По умолчанию

ага)) чел эелементарное сделать не может. а ему STL дают)) представляю реакцию препода.
Alkagolik вне форума Ответить с цитированием
Старый 09.07.2011, 18:19   #9
VolPuch
Новичок
Джуниор
 
Регистрация: 09.07.2011
Сообщений: 4
По умолчанию

спасибо Alkagolik, Сtrl я доработал код

Код:
#include <iostream>

using namespace std;

int main() {
    char str[100];
    char key;
    cin>>str;
    cin>>key;

    char res[100];

    int i;
    int n;
    int j = 0;

    for (n = 0; str[n] != '\0'; n++);

    for (i = 0; i<=n; i++)
    {
        while ((str[i] == str[i+1]) && (str[i] == key))
            ++i;
        res[j] = str[i];
        j++;
    }

    cout<<res;
    return 0;
}
VolPuch вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена определенного символа в строке на заданный. vladjke C++ Builder 2 15.06.2011 00:02
Определить кол-во вхождений символа в си-строку. mohita Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 29.11.2010 04:28
ассемблер, замена символа в строке tiger Помощь студентам 3 05.11.2009 15:25
Замена символа Flippp Общие вопросы C/C++ 20 24.06.2009 17:18
Подсчитать кол-во вхождений символа Си++ Alexion124 Помощь студентам 9 05.01.2009 00:03