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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2014, 16:32   #1
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию Сравнение цифр в строке

Имеется пользовательский класс string (не STL), в котором хранятся цифры в хаотичном порядке. Необходимо их сортировать по убыванию длины строки.
Собственно, как мне работать с этими элементами?
Praud вне форума Ответить с цитированием
Старый 02.05.2014, 16:39   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Наработачки?
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 02.05.2014, 16:51   #3
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Вот String

Код:
const int MAX_SIZE = 255;  

// класс строка
class myString: public IContainer
{
private: // свойства
	char str[MAX_SIZE];
public: // методы
	myString(void);  // конструктор по умолчанию
	myString(char*); // конструктор с параметром
	~myString(void); // деструктор
	myString& operator+(myString); // сложение типов myString
	myString operator+(char);      // сложение типов myString + char
	myString& operator+=(const myString&);  
	myString& operator=(const myString&);  // копирование
	char* getStr(void);
	int StrLen(void);
	char& operator[](int); // индексация
	void operator=(char*); //копирвание
	bool operator==(myString&); //отношение равенства
	
	// логические операции
	friend bool operator>(myString&, myString&);
	friend bool operator<(myString&, myString&);
	friend bool operator>=(myString&, myString&);
	friend bool operator<=(myString&, myString&);
	friend bool operator==(myString&, myString&);
	friend bool operator!=(myString&, myString&);
	
	// ввод\вывод в стандартный поток
	friend std::ostream& operator<<(std::ostream&,const myString&);
	friend std::istream& operator>>(std::istream&, myString&);

	////модификация класса
	void push();
	//void pop();
	//void information();

	virtual bool Work(myString&)
	{
		return true;
	}
	virtual void Sorty(myString&)
	{
	}

};
Код:
class Filter:public myString
{
public:
	 bool Work(myString& a)
	 {
		int k=0;
		for(int i=0;i<a.StrLen();i++)
		{
			if(isdigit(a[i]) && a[i]%2!=0)
				k++;
		}
		if(k>=2)
			return true;
		else return false;
	 }
};
Код:
class Sort: public myString
{
public:
	void Sorty(myString &a)
	{
		int k=0;
		int len=a.StrLen();
		char temp;
		for(int i=0;i<a.StrLen();i++)
		{
		
			if(a[i]%2!=0 && isdigit(a[i]))
			{
				a[k]=a[i];
				k++;
			}
		}
		for(int j=k;j<a.StrLen();j++)
			a[j]=' ';
		std::cout<<std::endl;

		for(int i=0;i<k;i++)
	         //тут что-то должно быть ) Какое-то преобразование char->int для сравнения, я не знаю...
		for(int i = 0; i < a[k] - 1; i++)
		{
			for(int j = i + 1; j < a[k]; j++)
			{
				if (a[i] < a[j])        //тут я просто пузырьком написал сортировку(пока не догнал)))
				{
					temp = a[i];
					a[i] = a[j];
					a[j] = temp;
				}
			}
		}
	}
};
Цель лабы - выучить наследование и полиморфизм. Так что не удивляйтесь что вот так вот) Комментарии написать еще не успел.

Расскажу как есть...
Вот задание:
Задание: Создать и протестировать следующие классы

1. Абстрактный класс.
Создать абстрактный класс Container, в котором определить чисто виртуальные функции для добавления, удаления и определения количества элементов в контейнере.

2. Класс одиночного наследования.
a) Модифицировать класс динамической структуры данных,содержащей строки (л.р. №2), чтобы он был производным от класса Container.
б) Создать 2 различных класса, производные от класса динамической структуры, позволяющие сортировать и фильтровать выходные данные. Для этого вводятся виртуальные функции, соответственно, для сортировки – функция для сравнения 2 строк, для фильтрации – предикат, определяющий, будет ли строка присутствовать в выборке фильтра.

3. Класс множественного наследования.
Создать класс, осуществляющий одновременно сортировку и фильтрацию.

3ий пункт еще не делал.

Сортировка: по убыванию длины строки
Фильтрация: нечетные целые числа, содержащиеся в строке.

Последний раз редактировалось Praud; 02.05.2014 в 16:54.
Praud вне форума Ответить с цитированием
Старый 02.05.2014, 16:56   #4
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Ну и мой Main чтобы окончательно развеять сомнения о бездельничестве )
Код:
	

myString str;
	
	cout<<"Введите строку: ";
	cin>>str;
	
	myString *A = new Filter;
	myString *B = new Sort; 
	if(A->Work(str))
		B->Sorty(str);
	cout<<str;
	getch();
Praud вне форума Ответить с цитированием
Старый 02.05.2014, 18:11   #5
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Я ниче не понял.

Ты пишешь, что сравнивать надо строки по длине строки. ("по убыванию длины строки").
Но в заголовке пишешь про сравнение цифр в строке.

Если ты сравниваешь длины - то тебе ваще фиолетово че там в строке за цифры или символы. Если сравниваешь цифры в строке, то нахрена тебе длины?
rrrFer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сравнение цифр заданного числа 22hope22 C# (си шарп) 16 10.04.2013 13:34
Сравнение кол-ва слов в строке и сопоставление аналогичной строке. kish_mish Общие вопросы C/C++ 0 12.03.2012 20:58
Удаление цифр в символьной строке Vigo1603 Общие вопросы C/C++ 4 27.09.2010 12:45
сложение цифр в строке от 1 до 5 buba3230 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 04.06.2009 23:53
Поиск последовательности цифр в строке mmx310 Microsoft Office Excel 14 05.02.2009 11:19