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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2011, 21:07   #1
Лунатик222
Ламер z:]
Пользователь
 
Аватар для Лунатик222
 
Регистрация: 19.01.2009
Сообщений: 60
По умолчанию Рекурсия

Всем доброго времени суток, есть такое задание

Цитата:
написать консольное приложение, которое будет работать с последовательностями слов. Вывести "меню" на экран
какие действия должна выполнять:
1) создание последовательности
2)объединение двух последовательностей
3) распечатать последов. в прямом и обратном порядках
4) посчитать сколько элементов в последоват
5) найти слово в последовательности (сказать на каком месте, если слов несколько, выдать все номера)
6) добавить слово к последовательности
7) удалить слово из послед (если слов несколько, программа должна спросить какое именно удалять)
8)замена одного слова на другое (если несколько, спросить какое)
9)вставить слово (если много, опять спросить какое именно)
10)узнать упорядоченный ли список
11) упорядочить последов.

все эти функции должны быть рекурсивными
Все ок, все функции сделал, все готово, но вот с рекурсией проблема
Факториал там вычислить рекурсионно и все такое прочее я понимаю как
Но как сделать обычную функцию вывода на экран всякого барахла например рекурсивной?
Подскажите пожалуйста, заранее спасибо

Код:
#include <vector>
#include <algorithm>
#include <iterator>
#include <string>
#include <iostream>
#include <utility>
using namespace std;


class Sequence{
public: 
	void print();
	void print_reverse();
	void add(string);
	void combine(Sequence);
	vector <int> find(string);
	void swap(string, string);
	void del(string);
	void sortSeq();
	int size();
	Sequence();
private:
	vector <string> seq;
	vector <string>::iterator end, begin, cur;
};

Sequence::Sequence() {
}

void Sequence::sortSeq() {
	sort(seq.begin(), seq.end());
}
void Sequence::swap(string swapstring, string swapstring2) {
	vector <int> count = find(swapstring);
	cout << "Модуль замены слова в последовательности " << endl;
	int a, b=count[0];
	if (count.size() == 0) cout << "Совпадений не найдено " << endl;
	if (count.size() == 1) {
		seq.insert(seq.begin()+b, swapstring2);
		seq.erase(seq.begin()+b+1);}

	if (count.size() > 1) {
		cout << "Совпадений больше 1, введите номер записи, которую хотите заменить" << endl;
		cin >> a;
		seq.insert(seq.begin()+a-1, swapstring2);
		seq.erase(seq.begin()+a);
	}
	
}
void Sequence::del(string delstring) {
	vector <int> count = find(delstring);
	cout << "Модуль удаления слова из последовательности " << endl << endl;
	int a;
	int b=count[0];
	if (count.size() == 0) cout << "Совпадений не найдено " << endl;
	if (count.size() == 1) 
		seq.erase(seq.begin()+b);

	if (count.size() > 1) {
		cout << "Совпадений больше 1, введите номер записи, которую хотите удалить" << endl;
		cin >> a;
		seq.erase(seq.begin()+a-1);
	}
}

int Sequence::size() {
	cout << "--------------------------------------------------------------------" << endl;
	cout << "Модуль вычисления размера последовательности " << endl << endl;
	cout << "Размер последовательности: " << seq.size() << endl;
	return seq.size();
	cout << endl;
}

void Sequence::combine(Sequence two) { 
	for (cur = two.seq.begin(); cur != two.seq.end(); cur++) {
		seq.push_back(*cur);
	}
}

void Sequence::print() {
	cout << "--------------------------------------------------------------------" << endl;
	cout << "Модуль вывода последовательности " << endl << endl;
	int count = 1;
	for (cur = seq.begin(); cur != seq.end(); cur++) {
		cout << "Элемент последовательности #" << count << ": " << *cur << endl;
		count++;
		
	}
	cout << endl;
}

void Sequence::print_reverse() {
	cout << "--------------------------------------------------------------------" << endl;
	cout << "Модуль вывода последовательности в обратном порядке " << endl << endl;
	int count = seq.size();
	for (int i=seq.size()-1; i >= 0; i--) {
		cout << "Элемент последовательности #" << count << ": " << seq[i] << endl;
		count--;
	}
	cout << endl;
}

void Sequence::add(string str) {
	seq.push_back(str);
}

vector <int> Sequence::find(string findstr) {
	cout << "--------------------------------------------------------------------" << endl;
	cout << "Модуль поиска слова " << findstr << " в последовательности " << endl << endl;
	vector <int> numbers;
	vector <string> strings;
	int i=0,count=0;
	for (cur = seq.begin(); cur != seq.end(); cur++) {
		if (*cur == findstr) {
			cout<< "Слово " << findstr << " найдено на месте под номером " << i+1 << endl; 
			count++;
			numbers.push_back(i);
		}
		i++;
	}
	cout << endl;
	return numbers;
}
Лунатик222 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия Ev1L Общие вопросы C/C++ 3 08.01.2011 18:48
Рекурсия gafruslan Помощь студентам 1 21.12.2010 17:43
Рекурсия <Tyz> Паскаль, Turbo Pascal, PascalABC.NET 3 18.12.2010 23:22
рекурсия -Spirit- Помощь студентам 1 14.01.2010 16:40
Рекурсия. Си. MAKEDON Помощь студентам 5 03.06.2009 17:52