Задача: Разнобуквица. Из имеющегося словаря выбрать наиболее длинное слово, в котором все буквы разные, например: ЛЕЙКОПЛАСТЫРЬ, НЕРЯШЛИВОСТЬ, ЧЕТЫРЁХДЮЙМОВКА.
Тесты:
| Словарь | Результат | Комментарий | 
| There, here, the, then | then | Пройден | 
| Список 2500 наиболее употребительных английских слов | background | Пройден | 
Код:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <iostream> #include <string> using namespace std; int main() { 	string s, max;  // Оригинал, копия, самое длинное слово    	int n = 0;         //Счетчик размерности слова 	while (cin >> s) {                                  		while(!isalpha(s[0])) s.erase(0,1);               // Строка не будет  		while(!isalpha(s[s.length()-1])) s.pop_back();   // просматривать знаки препинания и т.п.  		bool x = 1;                                //Создаем булеву переменную 		for (int i = 0; i < s.length(); i++)      	//Создаем 2 цикла для проверки на повторение   			for (int j = i+1; j < s.length(); j++)//каждой буквы в слове. 				if (s[i] == s[j]) {    //Если одна из букв встречается больше одного раза    					x = 0;            //в одном слове, присваиваем х значение "false" и 					break;           // прерываем цикл проверки. 				} 		if(x && s.length() > n) {   //Если же значение х "true", то присваиваем максимально  			n = s.length();        // длинное слово max. 			max = s; 		} 	} 	cout << max;          //Выводим результат. 	return 0;  } | 
Для того что бы найти искомое слово создаем две строки, одна для ввода словаря, другая для результата. Создаем цикл [latex]while[/latex] . С помощью функции [latex]isalpha()[/latex] отсеиваем знаки препинания в словаре. Далее создаем булеву переменную [latex]x[/latex] и два цикла [latex]for[/latex] что бы проверить встречается ли буква в слове больше одного раза, если хоть одна буква повторяется, то присваиваем [latex]x[/latex] значение «false» и прерываем цикл [latex]for[/latex]. Если значение булевой переменной «true», значит в слове нет повторяющихся букв, из таких слов теперь можно искать самое длинное, для этого счетчику [latex]n[/latex] присваиваем размерность самого длинного слово, и присваиваем его значение в строку [latex]max[/latex]. Выводим результат.
