Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Здвинуть строку C++

9.3K
13 января 2010 года
ORINE
11 / / 02.05.2005
Как реализовать здвиг строки(тобишь я так понимаю удаление), если в этой строке находиться болие двух одинаковых символов?
п.с. и еще есть задача: "вывести правельный треугольник в центр экрана, с введением параметров фигуры". Помогите пожалуйста люди добрые=)
36K
13 января 2010 года
Sonia
74 / / 21.05.2009
Здравствуйте.
вот алгоритм.
1. Записываете в переменную(prev например) первый символ строки
2. Организуете цикл по символам строки со второго символа
3. В цикле сравниваете текущий символ с запомненным
4. Если символы одинаковые прибавляете счетчик (переменная типа int)
5. Копируете текущий символ в переменную prev
6. Если счетчик больше двух выходим из цикла
7. После выхода из цикла удаляем строку.
842
13 января 2010 года
sigmov
301 / / 16.09.2008
Цитата: ORINE
Как реализовать здвиг строки(тобишь я так понимаю удаление), если в этой строке находиться болие двух одинаковых символов?


CString::Replace(.....)

Цитата: ORINE
п.с. и еще есть задача: "вывести правельный треугольник в центр экрана, с введением параметров фигуры". Помогите пожалуйста люди добрые=)


Экрана компьютера или окна приложения?

9.3K
13 января 2010 года
ORINE
11 / / 02.05.2005
Цитата: sigmov
CString::Replace(.....)

Экрана компьютера или окна приложения?


Окна приложения

9.3K
13 января 2010 года
ORINE
11 / / 02.05.2005
Сделал вот таким образом, но выводит не отредактированное слово, а те символы которые не нужны. т.е. набираю igggor соотвецтвенно выводит gg
#include <iostream>
#include <string.h>
void main()
{
using namespace std;
char st[256];
char str1[100];
cout<<"vvedi stroku\n";
cin.get(st,256);
int n=strlen(st);
cout<<"Otvet: \n";
for(int i=0; i<=n; i++){
if(st==st[i+1]){
//cout<<"Found";
for(int j=0; j<=i; j++)
st[j]=st[j-1];//&#231;&#228;&#226;&#232;&#227;&#224;&#229;&#236; &#241;&#242;&#240;&#238;&#234;&#243;
cout<<st[j];
cout<<"\n";
}}
536
13 января 2010 года
alex-kniaz
382 / / 07.08.2008
2 вопроса
1) параметры во второй задаче - длина ребра треугольника, или что-то ещё.
2) какой компилятор?
9.3K
13 января 2010 года
ORINE
11 / / 02.05.2005
Цитата: alex-kniaz
2 вопроса
1) параметры во второй задаче - длина ребра треугольника, или что-то ещё.
2) какой компилятор?



1) Параметры вводяться с клавиатуры, треугольник должен быть правельным
2) Желательно на VC++ но можно и Borland попробовать

12K
13 января 2010 года
Ghox
297 / / 26.07.2009
По поводу первой задачи.
Если вам нужно, имея строку, удалить (путем сдвига) все идущие подряд сочетания одинаковых символов в количестве > 2, т.е. чтобы например из строки:
[FONT="Courier New"][SIZE="2"]abbcccddddeeeeefggghhi[/SIZE][/FONT]
получилась строка:
[FONT="Courier New"][SIZE="2"]abbfhhi[/SIZE][/FONT]
и если вам надо сделать это на C++, то можете использовать объекты std::string и функцию erase для "сдвига":
Код:
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string str;
    cout << "Enter string:\n";
    cin >> str;
    for(unsigned int i = 0; i < str.length() - 1; ++i)
    {
        unsigned int j = i + 1;
        while(j < str.length() && str == str[j])
            ++j;
        if(j > i + 2)
        {
            str.erase(i, j - i);
            --i;
        }
    }
    cout << "Result string:\n" << str << endl;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог