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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2015, 21:21   #81
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Код:
protected:
	char c;
	int size;
	string s;
public:
void Split(char c)
{
	int k;
	string st,se;
	for (int i = 0; i < s.length()-1; i++)
		{
			st += s[i];
			if (s[i] == c)
			{
				k = i;
				{
					if (st[0] == ' ' )
					{
						for (int j = 0;j < st.length(); j++)
						{
							cout<<st[j+1];
						}
						cout<<"\n";
					}
					else cout<<st<<"\n";
				}
			se += st;
			st.clear();
			}
		}
		if (se.length() < s.length())
	{
		if (s[k+1] == ' ' )
		{
			for (int j = k+1;j < s.length(); j++)
			{
				cout<<s[j+1];
			}
		}
		else
		{
			for (int j = k+1;j < s.length(); j++)
			{
				cout<<s[j];
			}
        }
		cout<<"\n";
	}
	cout<<"\n";
}
void printsize (string s)
{
	cout<<sizestring(s)<<"\n";
	Split(c);
}

};

 int _tmain(int argc, _TCHAR* argv[])
{
   SplitText a;
	char c;
	string s;
	cout<<"Vvedite stroky"<<"\n";
	getline(cin,s);
	cout<<"Vvedite c"<<"\n";
	cin>>c;
	a.printsize(s);
	system("pause");
	return 0;
}
Писал отдельно Split, как отдельная программа работает. Вот только как член класса не очень.
Возможно использовать Split.cpp через #include (#inline) <Split> ?
Dima-91 вне форума Ответить с цитированием
Старый 02.12.2015, 21:23   #82
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Возможно использовать Split.cpp через #include (#inline) <Split> ?
В условии не сказано - значит допустимо на твой страх и риск )
Короче: Делай все, что не противоречит задаче.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.12.2015, 21:34   #83
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Знаний не хватает. Подскажите как использовать в Split(char c), введенную строку string s.
Dima-91 вне форума Ответить с цитированием
Старый 02.12.2015, 22:24   #84
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты лучше сделай эту строку как свойство класса, чтоб в метод только разделитель передавать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.12.2015, 22:42   #85
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Получилось.
Код:
#include <stdio.h>
#include <iostream.h>
#include <string>

class SplitText
{
protected:
	char c;
	int size;
	string str;
public:
	string stroka (string s)
{
	cout<<"Vvedite stroky"<<"\n";
	getline(cin,s);
	for (int i = 0; i < s.length(); i++)
	{
    str += s[i];
	}
	return str;
}
void Split(char c)
{
	int k;
	string st,se;
	for (int i = 0; i < str.length()-1; i++)
		{
			st += str[i];
			if (str[i] == c)
			{
				k = i;
				{
					if (st[0] == ' ' )
					{
						for (int j = 0;j < st.length(); j++)
						{
							cout<<st[j+1];
						}
						cout<<"\n";
					}
					else cout<<st<<"\n";
				}
			se += st;
			st.clear();
			}
		}
		if (se.length() < str.length())
	{
		if (str[k+1] == ' ' )
		{
			for (int j = k+1;j < str.length(); j++)
			{
				cout<<str[j+1];
			}
		}
		else
		{
			for (int j = k+1;j < str.length(); j++)
			{
				cout<<str[j];
			}
        }
		cout<<"\n";
	}
	cout<<"\n";
}

};

 int _tmain(int argc, _TCHAR* argv[])
{
	string s;
	char c;
	SplitText a;
	a.stroka(s);
	cout<<"Vvedite c"<<"\n";
	cin>>c;
	a.Split(c);
	system("pause");
	return 0;
}
Осталось мелочи xD
Dima-91 вне форума Ответить с цитированием
Старый 03.12.2015, 10:11   #86
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
cout<<"Vvedite stroky"<<"\n";
getline(cin,s);
Двойка. Это не понимается.
И еще важно учесть, что разбиение строки означает избавление ее от разделителей, а не помещение их в конец разбитых строк.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.12.2015, 10:33   #87
chipside
Форумчанин
 
Регистрация: 03.08.2013
Сообщений: 208
По умолчанию

Код:
for (int j = 0;j < st.length(); j++)
						{
							cout<<st[j+1];
						}
Что-то мне подсказывает тут выход за пределы массива.
Нет?
Индекс идёт с нуля, а счётчик с единицы.
--
Я, конечно, не программист, но думаю, если идёт j+1, то надо в условии писать < (st.length() - 1).
Поправьте меня кто-нибудь, если я ошибаюсь (со мной такое часто бываетъ).

Цитата:
Сообщение от Stilet Посмотреть сообщение
Двойка. Это не понимается.
И еще важно учесть, что разбиение строки означает избавление ее от разделителей, а не помещение их в конец разбитых строк.
Я прочитал задание (на странице 6) и не понял, чего не так.
Можешь пояснить?

Последний раз редактировалось Stilet; 03.12.2015 в 11:23.
chipside вне форума Ответить с цитированием
Старый 03.12.2015, 10:56   #88
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
если идёт j+1, то надо в условии писать < (st.length() - 1).
да ну.
Код:
for (int i = 1000; i < 10; i++)
Код:
for (bool f = true; !f;;)
Цитата:
Я прочитал задание (на странице 6) и не понял, чего не так.
Можешь пояснить?
Видимо имелось в виду, что класс не должен ничего знать ни о какой консоли, должна просто строка передаваться.

Наверно str должно в конструкторе инициализироваться.
И Split должен не менять ее, а возвращать новую строку (и не выводить ничего никуда).

Вероятно стоит сделать это поле const примерно так:
Код:
class A
{
private:
    const int value_;
public:
    A(int value) : value_(value)
    {
    }
};
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 03.12.2015 в 11:23.
Alex11223 вне форума Ответить с цитированием
Старый 03.12.2015, 11:08   #89
chipside
Форумчанин
 
Регистрация: 03.08.2013
Сообщений: 208
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
да ну.
Код:
for (int i = 1000; i < 10; i++)
То есть цикл остановит сам себя?
Верно?
chipside вне форума Ответить с цитированием
Старый 03.12.2015, 11:24   #90
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Можешь пояснить?
Могу. Ввод строки из функции и передача в функцию строки. Понял что не так?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
что вас мотивирует, почему вы предпочитаете именно работу за компьютером, работу программиста? sgasgar Свободное общение 47 03.05.2016 07:27
Какая у вас была мотивация для начала и изучения программирования? monolit9951 Свободное общение 22 14.02.2014 19:57
Мотивация к программированию Nik_Parker Свободное общение 30 05.10.2013 19:12
Программирование, мотивация, перспективы Frants Свободное общение 6 03.10.2012 23:52