Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 10.09.2007, 20:03   #1
Ellita
Пользователь
 
Аватар для Ellita
 
Регистрация: 24.08.2007
Сообщений: 37
Репутация: 30
Счастье Как удалить слово из строки?

Мне нужно удалить слово каторое заканчивается на ая (типо морская или тверская)
Ellita вне форума   Ответить с цитированием
Старый 11.09.2007, 08:54   #2
studenth
Форумчанин
 
Регистрация: 10.09.2007
Сообщений: 105
Репутация: 65
По умолчанию

//---------------------------------------------------------------------------
#include <vcl.h>
#include <windows.h>
#include <string>
#pragma hdrstop
#pragma argsused
using namespace std;
//---------------------------------------------------------------------------

WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
string Text = " курилы питер тверская морская бумажная гавеная ceшняк виски дура ";

for(int i=0; i<Text.length(); i++)
{
if((Text[i] == 'а') && (Text[i+1] == 'я'))
{ //оканчивается на "ая"

if((Text[i+2] == ' ') || (Text[i+2] == '\0'))
{
int j = ++i;
//это конец слова
do
{
Text.erase(Text.begin() + j);
j--;
i--;
}
while((Text[j] != ' '));
Text.erase(Text.begin() + j);
}

}
}

ShowMessage(Text.c_str());
return 0;
}
//---------------------------------------------------------------------------

первое что пришло в голову.
А можно задачу более конкретно обрисовать? из любой строки, с любыми символами?

Последний раз редактировалось studenth; 11.09.2007 в 10:58.
studenth вне форума   Ответить с цитированием
Старый 11.09.2007, 10:45   #3
studenth
Форумчанин
 
Регистрация: 10.09.2007
Сообщений: 105
Репутация: 65
По умолчанию

честное слово запарился править
вечно спешу куда - то да и кофе в институте кончился...в автомате
в этом примере строка должна быть содержать один пробел впереди....издержки моего дурного метода
studenth вне форума   Ответить с цитированием
Старый 11.09.2007, 11:14   #4
Virtson
Владимир М.
Профессионал
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Адрес: Барнаул -> Новосибирск
Сообщений: 1,289
Репутация: 442

icq: 329638065
По умолчанию

я бы нашел слово по пробелам, а потом проверял его окончание . но суть та-же
__________________
Берегите друг друга!
Virtson вне форума   Ответить с цитированием
Старый 12.09.2007, 20:09   #5
Ellita
Пользователь
 
Аватар для Ellita
 
Регистрация: 24.08.2007
Сообщений: 37
Репутация: 30
По умолчанию

Мне бы просто цикл нужен , так то прога у меня уже готова, только с удалением запарочка!
Ellita вне форума   Ответить с цитированием
Старый 17.09.2007, 13:34   #6
studenth
Форумчанин
 
Регистрация: 10.09.2007
Сообщений: 105
Репутация: 65
По умолчанию

Цитата:
Сообщение от Ellita Посмотреть сообщение
Мне бы просто цикл нужен , так то прога у меня уже готова, только с удалением запарочка!
Еще, помимо примера, можешь почитать про функцию strtok.
Это функция лексимизации строки. тоесть она строку дергает на лексемы, ограниченные параметром.
studenth вне форума   Ответить с цитированием
Старый 19.09.2007, 15:38   #7
Персей
Пользователь
 
Регистрация: 18.09.2007
Сообщений: 13
Репутация: 10
По умолчанию Удаление слова, оканчивающегося на "an"

Протестировал, прогграмма работает, где бы не находилось слово, в конце, в середине или в начале предложения. Слово оканчивающееся на "an" удаляется.

Но удаляется только одно первопапавшееся слово, оканчивающееся на "an".

Вот, посмотри, может появятся какие нибудь соображения.

'\0' означает конец строки

32 десятеричный код пробела
Персей вне форума   Ответить с цитированием
Старый 19.09.2007, 15:43   #8
Персей
Пользователь
 
Регистрация: 18.09.2007
Сообщений: 13
Репутация: 10
По умолчанию Листинг программы удаления слова

Код:
#include <iostream.h>

void main(){
	char str[]="history of American peaple ";// строка
	int i,k;
	i=k=0;
// 1. ищем слово на "an" (ставим индекс i на символ 'a')	
	for(; i!=sizeof(str); i++){
		if(str[i]=='a' && str[i+1]=='n'){ 
			break;
		}
	}
// 2.поиск начала слова, оканчивающегося на "an" 
               // k это индекс начала слова
		if(str[i]=='a'){
			for(;str[i]!=32 && i!=-1; i--);
			k = i+1;
// 3. поиск следующего слова и конца строки	
			for(i++;str[i]!='\0' && str[i]!=32;i++);		
			//cout<<"str[i]="<<str[i]<<i<<"\n";
// 4. удаление слова на "an"
			if(str[i]!='\0'){
				for(;str[i]!='\0';i++,k++){		
					str[k]=str[i];
				}
			}str[k]='\0';
			 
			cout<<str<<"\n\n";
		}	
}

Последний раз редактировалось rpy3uH; 21.04.2009 в 10:26.
Персей вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить из строки подстроку по маске ? - fenix - Помощь студентам 4 23.04.2008 15:04
Как удалить пустые строки в WORD? KUNAR Microsoft Office Word 2 04.09.2007 20:56
Удалить из Memo повторяющиеся строки Etar Компоненты Delphi 2 28.06.2007 18:34
С++ Найти самое длинное слово строки k0z7_g0b1in Общие вопросы C/C++ 3 22.04.2007 17:37
удалить похожие строки ZORRO2005 Microsoft Office Excel 0 28.11.2006 23:03


17:07.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.