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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2012, 23:58   #1
MyQwErTy
Пользователь
 
Аватар для MyQwErTy
 
Регистрация: 16.10.2008
Сообщений: 73
По умолчанию Сортировка слов по алфавиту.

Доброго время суток. Имеется задача:
/*Определить класс-строку. В класс включить два конструктора:
для определения класса строки строкой символов и путем
копирования другой строки (объекта класса строки).
Предусмотреть функции сортировки слов в строке по-алфавиту
и подсчёта количества слов.*/

Реализованы все конструкторы и функции, кроме сортировки.
Функция сортировки присутствует, но работать, естественно, не хочет.
Огромная просьба посмотреть в чем я ошибся и направить в правильное русло заблудшую в дебрях С++ душонку.
Заранее спасибо!




Код:
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <time.h>
#include <string>
using namespace std;

class stroka
{

	/// строка из стандартной библиотеки - будет 
	/// хранить строку которую передадут при создании
	string m_str;

public:
	/// первый тип конструктора. на вход получает массив символов
	/// и им инициализирует свой str
	stroka(const char* src) : m_str(src) {};
	/// второй тип конструктора. на вход получает уже ранее созданный stroka объект,
	/// конструктор проинициализирует str содержимым str готовой строки src
	stroka(const stroka& src) : m_str(src.m_str) {};
public:

	/// подсчёт слов в строке
	int numword()
	{
		int n = 1;
		/// слово кончается пробелом
		/// бежим по всем символам строки и считаем пробелы
		for ( int i = 0; i <m_str.length(); i++)
		{
			char symbol = m_str[i];
			if (symbol == ' ' )
			{
				n++;
			}
		}
		return n;
	}

	string sorting(string str)
	{
		int k=0;
		//считаем пробелы
		for(int i=0;i<str.length();i++) 
		{
			if(str[i]==' ') 
				k++;
		}
		int s=k;
		string words; 
		int word_begin=0,word_end=0;
		//заполняем массив строк
		for (int i=0; i<str.length();i++)  
		{
			if(str[i]==' ' || i==str.length()-1) 
			{
				word_end=i;
				for(int j=word_begin;j<word_end;j++) words[k]+=str[j];
				k++;
				word_begin=word_end+1;
			}
		}
		// сортируем массив строк
		char tmp;
		for(int i=0;i<k;i++)
			for(int j=i;j<k;j++)
				if(words[i]>words[j]) 
				{
					tmp=words[i]; 
					words[i]=words[j];
					words[j]=tmp;
				}
				str="";
				//вставляем отсортированный вариант в исходную строку(теперь можно из маина просто считать строку, вызвать функцию и вывести строку, уже отсортированную)
				for(int i=0;i<k;i++) str+=words[i]+ " ";
				return str;
	}

	/// печатает на экран строку
	void print1( string str)
	{
		string st1=str;
		cout<<st1;
	}
	void print()
	{
		string st=m_str;
		cout<<st;
	}
};
int main()
{
	/// здесь всё тупо, считали с клавы строку

	char line[256]; /// массивчик куда читать будем
	cout << "Enter line, 255 chars max!" << endl;
	cin.getline(line,255); /// считываем в массивчик с клавиатуры

	char line2[256];
	stroka str2(line2);

	string st2;

	stroka str1(line); /// создаём строку
	cout << "constructor with const char* : ";
	str1.print();
	cout << endl;
	cout << "copy constructor : ";
	stroka(str1).print(); 
	cout << endl;
	cout << "num word in len: " << str1.numword() << endl;
	cout << "sort the rows:";
	str2.print1(st2); 
	return 0;
}
MyQwErTy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировка массива слов по алфавиту elivartar Общие вопросы C/C++ 5 06.07.2016 07:20
сортировка массива слов по алфавиту elivartar Общие вопросы C/C++ 1 26.12.2011 17:33
Сортировка слов по алфавиту vital_56 Microsoft Office Word 16 23.12.2009 17:09
Сортировка слов по алфавиту dom1nator Помощь студентам 0 11.11.2009 00:04
Сортировка слов по алфавиту victorio Microsoft Office Word 7 15.12.2007 19:03