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

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

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

Удаление подстроки (С) - C++

01.03.2010, 19:10. Просмотров 1030. Ответов 15
Метки нет (Все метки)

Ребят кто может помочь с удаление подстроки в строке, может у когото код завалялся.

Строка: Пальцы его мнут и мнут глину. Удалить: "и мнут"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
01.03.2010, 19:14     Удаление подстроки (С) #2
т.е удалить повторяющееся слово?

Добавлено через 1 минуту
кста решить или помочь разобратся
решить : полностью условие
разобратся : все на форуме
aydar
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 92
01.03.2010, 19:15  [ТС]     Удаление подстроки (С) #3
нет удалить именно выделенное слово, решить)))
breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
01.03.2010, 19:16     Удаление подстроки (С) #4
т.е из данной строки удалить" и мнут"
aydar
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 92
01.03.2010, 19:22  [ТС]     Удаление подстроки (С) #5
да, из этой строки
breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
01.03.2010, 19:36     Удаление подстроки (С) #6
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
#include <iostream>
using namespace std;
 
void main(){
char buff[256];
char word[10];
cin.getline(buff,256);
cout<<endl;
cin.getline(word,10);
cout<<endl;
 
char *p=buff,*d=&word[0],*e;
while(*p)
{
    if(*p==*d)
    {e=p;
    bool thisWord=true;
    while(*d)
        {
            if(*p=*d){++p;++d;}
            else thisWord=false;
        }
    if(thisWord)
        while(*p)
        {
        *e=*p;
        ++p;
        ++e;
        }
        *e=0;
        d=&word[0];
    }
if(!(*p))break;
 
++p;
}
cout<<buff;
}
Добавлено через 45 секунд
1.вводишь строку
2.вводишь подстроку
3.получаешь результат

Добавлено через 6 минут
дашь мыло скину исходник (*.cpp)
aydar
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 92
01.03.2010, 19:44  [ТС]     Удаление подстроки (С) #7
Блин у меня тут using namespace std;
ошибка, использую borland c++

Добавлено через 3 минуты
а вот это сойдет ?
Код
/* strstr example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] ="This is a simple string";
  char * pch;
  pch = strstr (str,"simple");
  strncpy (pch,"sample",6);
  puts (str);
  return 0;
}
breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
01.03.2010, 19:48     Удаление подстроки (С) #8
1-е решение используй MSVS 2005 - 2010
2-e замени строки
C++
1
2
#include <iostream>
using namespace std;
на
C++
1
#include <iostream.h>
Добавлено через 2 минуты
Цитата Сообщение от aydar Посмотреть сообщение
а вот это сойдет ?
нет это поиск слова и замена его на другое
aydar
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 92
01.03.2010, 19:53  [ТС]     Удаление подстроки (С) #9
все равно во 2 строчке ошибка
breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
01.03.2010, 19:57     Удаление подстроки (С) #10
в какой строке какая ошибка
если используешь iostream.h нэймспасе не нужен, и если используешь iostream то тогда нужно приписывать using namespace std;
aydar
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 92
01.03.2010, 20:23  [ТС]     Удаление подстроки (С) #11
Блин че-то все равно ошибки, слушай а можешь сделать задачу, такого вида дан текст выделить лексемы, сделай плиз как можно легче, без всяких там ссылок.
breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
01.03.2010, 20:29     Удаление подстроки (С) #12
1. ошибок в коде нет, проверено!
2. для лексем существует функция strtok() но она тоже работает с указателями;

ЗЫ: то что я напишу будет отнюдь не легче предыдущего
aydar
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 92
01.03.2010, 21:51  [ТС]     Удаление подстроки (С) #13
1. Оk
2. Ну напиши с указателями, пожалуйста

Добавлено через 1 час 17 минут
ты тут?
breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
01.03.2010, 21:53     Удаление подстроки (С) #14
эх, как тебе её разбить на лексемы? засунуть в char ** ?
aydar
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 92
01.03.2010, 21:54  [ТС]     Удаление подстроки (С) #15
используя ф-цию обработки строковых выделить лексемы, а хз как их выделть может типа так *!*
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2010, 22:14     Удаление подстроки (С)
Еще ссылки по теме:

Разбить строку на все "связные" подстроки. Получившиеся подстроки записать в вектор C++
C++ Создать функции добавления подстроки и удаления подстроки
C++ Удаление подстроки из строки
Удалить слова, начинающиеся с заданной подстроки, а слова без заданной подстроки, упорядочить по возрастанию C++
Найти длину максимальной подстроки, такой что в этой подстроке не существует подстроки равной какой-то строке C++

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

Или воспользуйтесь поиском по форуму:
breate
56 / 56 / 2
Регистрация: 23.10.2009
Сообщений: 250
01.03.2010, 22:14     Удаление подстроки (С) #16
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
#include <iostream>
using namespace std;
 
void main()
{
char buff[256];
cin.getline(buff,256);
char rax[]=" ";
char *p=&buff[0];
int n=0;
while(*p)
{
    char *d=&rax[0];
    while(*d)
    {
    if (*p==*d)++n;
    ++d;
    }
    ++p;
}
char **a=new char*[n+1];
a[0]=&buff[0];
a[n]=NULL;
 
p=&buff[0];
int i=1;
while(*p)
{
    char *d=&rax[0];
    while(*d)
    {
        if (*p==*d){
        *p=0;
        a[i]=(p+1);
        ++i;
        break;
        };
    ++d;
    }
    ++p;
}
}
в результате будет в **a лексемы, к лексеме можно обратиться через a[i]
Yandex
Объявления
01.03.2010, 22:14     Удаление подстроки (С)
Ответ Создать тему
Опции темы

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