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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2015, 14:21   #1
JLady
 
Регистрация: 05.04.2015
Сообщений: 7
По умолчанию Си++ Строки

Найти слова, содержащие подстроку “sas”. Помогите пожалуйста, не могу никак разобраться.
JLady вне форума Ответить с цитированием
Старый 07.04.2015, 15:01   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Строку разбивать на слова умеешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.04.2015, 15:46   #3
JLady
 
Регистрация: 05.04.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Строку разбивать на слова умеешь?
ну как сказать, не совсем
JLady вне форума Ответить с цитированием
Старый 07.04.2015, 16:37   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ясно. Могу предложить для старта следующее: http://www.programmersforum.ru/showthread.php?t=214478
А далее если не ошибаюсь функцией http://www.cplusplus.com/reference/cstring/strstr/ проверять вход подстроки, в том что в процессе работы цикла strtok() откусывать будет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.04.2015, 15:06   #5
Aleksander550
Форумчанин
 
Регистрация: 07.01.2014
Сообщений: 124
По умолчанию

примерно так:
Код:
#include <string.h>
#include <windows.h>
#include <iostream>

using namespace std;

int main () {
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	const int max = 255;
	char str[max], word[max];
	int begin = 0, end, len;
	bool is_word = true;//слово найдено
	cout << "Введите сотроку:\n";
	gets(str);//строка символов
	cout << "\nВведите маску поиска(подстроку):\n";
	gets(word);//маска поиска
	len = strlen(str);//узнать длину строки
	//костыли)
	str[len] = ' ';//в каонец строки добавить пробел
	str[len + 1] = '\0';//в самый конец добавить завершающий символ
	len = strlen(str);//узнать длину новой строки
	cout << "\n\nНайденные слова:\n";
		for (int i = 0; i < len; i++){//перебор всех символов строки
		if (str[i] == ' '){//если нашли пробел
			end = i;//где слово заканчиватся
			for (int j = begin; j < end; j++){//от начала слова до пробела
				if (str[j] == word[0]){//если в строке совпала первая буква маски
					for (int k = 1; k < strlen(word); k++){//проверим все остальные буквы маски
						if (str[j + k] != word[k]){//если есть отличия
							is_word = false;//значит это не то слово
							break;//завершить цикл k
						}
						else//если различий небыло
							is_word = true;//слово найдено
					}
					if (is_word){//если маска подошла
						for (int p = begin; p < end; p++){//напечатать слова
							cout << str[p];//посимвольно
						}
						cout << endl;
						break; //прервать цикл j
					}
				}
			}
			begin = ++i;//установить начало нового слова
		}
	}
		//просто напечатать что ввёл пользователь
	cout << endl << str << endl << word << endl;
	system("pause");
	return 0;
}
Осталось разбить на функции(если надо) и красиво оформить.
Возможна не правильная работа если пользователь введёт два пробела подряд.
#define TRUE FALSE //счастливой отладки

Последний раз редактировалось Aleksander550; 08.04.2015 в 15:19.
Aleksander550 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на строки. Даны две строки. Определить можно ли из символов первой строки получить вторую строку.( написать подпрограммой и ANTON1994 Паскаль, Turbo Pascal, PascalABC.NET 5 09.02.2013 14:07
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки Алексей_2012 Помощь студентам 1 05.04.2012 11:26
Сделать в гриде строки выше, чтобы не растягивать строки до бесконечности kris__tina БД в Delphi 1 09.06.2011 15:31
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10