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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2017, 17:35   #1
PickaBuu
Пользователь
 
Регистрация: 25.05.2017
Сообщений: 16
Печаль Нужна помощь с написанием функции c++

Функция TCHAR* poiskPstrS1toS2(TCHAR* str,TCHAR s1, TCHAR s2, int& len) получает строку и находит в ней первую подстроку от символа s1 до символа s2, возвращает через возвращаемое значение адрес этой первой найденной подстроки, а также ее длину через параметр по ссылке. Если такая подстрока не найдена, то функция возвращает 0.
Не могу понять, как организовать поиск между s1 и s2.
И совсем уж глупый вопрос: как вернуть через возвращаемое значение адрес подстроки и ее длину через параметр по ссылке.
Если не трудно, напишите код!
PickaBuu вне форума Ответить с цитированием
Старый 16.10.2017, 17:44   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Не могу понять, как организовать поиск между s1 и s2.
Ищите s1, от него ищите s2 и возвращаете то, что нашли или 0. Это ж даже не программирование, а складывание кубиков ребенком лет 4х.

Цитата:
как вернуть через возвращаемое значение адрес подстроки и ее длину через параметр по ссылке.
Присвоить. И пойти почитать, чем отличается передача ссылки от самой переменной в любой книжке по языку.
p51x вне форума Ответить с цитированием
Старый 16.10.2017, 18:46   #3
PickaBuu
Пользователь
 
Регистрация: 25.05.2017
Сообщений: 16
По умолчанию

Код:
int ravnoS(TCHAR* str, TCHAR s)
{
	for (; *str; str++)
	
		if (s != *str)
			return 0;
	return 1;

}

TCHAR* poiskPstrS1toS2(TCHAR* str, TCHAR s1, TCHAR s2, int& len)
{
	setlocale(0, "rus");

	TCHAR* p = str;
	len = 0;

	for (; *str; str++)
		if (*str == s1)
		{
			for (; *str != s2; str++)
			{
				*p = *str;
				len++;
				
			}
			
			return p;
		}
	return 0;

	_getch();
}

void main()
{
	int len;
	TCHAR str[80] = TEXT("itsjeans");
	poiskPstrS1toS2(str, 'j', 's', len);
	cout << str;


	_getch();
}
Пожалуйста, оформляйте Ваш код согласно правилам.
Выводит: "ntsjeans", когда должна выводить "jeans". Что нужно исправить?

Последний раз редактировалось Вадим Мошев; 16.10.2017 в 18:50.
PickaBuu вне форума Ответить с цитированием
Старый 16.10.2017, 19:04   #4
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

У меня не заработало "TCHAR" - поменял на "char":

Код:
#include <iostream>
using namespace std;

int ravnoS(char* str, char s)
{
	for (; *str; str++)

		if (s != *str)
			return 0;
	return 1;

}

char* poiskPstrS1toS2(char* str, char s1, char s2, int& len)
{
	setlocale(0, "rus");

	char* p = str;
	len = 0;

	for (; *str; str++)
		if (*str == s1)
		{
			p = str;
			for (; *str != s2; str++)
			{
				len++;
			}
			return p;
		}
	return 0;


}

void main()
{
	int len;
	char str[80] = "itsjeans";	
	cout << poiskPstrS1toS2(str, 'j', 's', len);


	cin >> len;
}
Хорошенько протестируй.
ura_111 вне форума Ответить с цитированием
Старый 16.10.2017, 19:04   #5
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Но, если у тебя работает с "TCHAR", то его оставляй.
ura_111 вне форума Ответить с цитированием
Старый 16.10.2017, 19:06   #6
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

А ещё у меня ошибка выскочила в "_getch();" - заменил на
Код:
cin >> len;
ura_111 вне форума Ответить с цитированием
Старый 16.10.2017, 19:14   #7
PickaBuu
Пользователь
 
Регистрация: 25.05.2017
Сообщений: 16
По умолчанию

Теперь просто выводит "itsjeans"
PickaBuu вне форума Ответить с цитированием
Старый 16.10.2017, 19:17   #8
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Ты скопировал всю программу или только функцию?

Потому что я менял и "main()".
ura_111 вне форума Ответить с цитированием
Старый 16.10.2017, 19:24   #9
PickaBuu
Пользователь
 
Регистрация: 25.05.2017
Сообщений: 16
По умолчанию

Понял, все работает, спасибо
PickaBuu вне форума Ответить с цитированием
Старый 16.10.2017, 19:28   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию


Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очень нужна помощь с написанием программы... срочно(буду благодарен за помощь) 5Paladin5 Помощь студентам 3 02.07.2009 09:12
C++ Функции! Нужна помощь! Faceless001 Помощь студентам 2 29.05.2009 16:51
Нужна помощь с написанием софтины. TakeThat БД в Delphi 1 10.11.2008 03:35