Вопрос № 177745: Требуется написать программу, которая после ввода текста/предложения, выводит в столбик по отдельности слова, без знаков препинания, после этого доработать программу что бы она выводила только слова, начинающиеся с гласной буквы+ещё вариант програм...
Вопрос № 177762: Добрый вечер уважаемые эксперты, помогите написать програму на С++ которая решает уравнение Y = 1/4 - 1/4 sin(5/8Пи-8α) ...
Вопрос № 177765: Уважаемые эксперты, помогите в написании следующей программы на языке С++: Написать, используя технику указателей, программу работы с базой отдела кадров. База размещается в текстовом файле произвольного размера. Каждая строка – запись об одно...
Вопрос № 177745:
Требуется написать программу, которая после ввода текста/предложения, выводит в столбик по отдельности слова, без знаков препинания, после этого доработать программу что бы она выводила только слова, начинающиеся с гласной буквы+ещё вариант программы, где выводится только 1е слово, начинающееся на гласную. Первую часть я сделал, слова в столбик выводятся как положено, прошу помочь доработать, что бы выводились только слова, начинающиеся с гласной буквы+ещё вариант программы, где выводится только 1е
слово, начинающееся на гласную. И если можно, 3й вариант, где 1е слово на гласную, а остальные за ним идут как обычно. P.S. Работает в CPP в досовской оболочке. Программу прилагаю.
// Используемые синонимы для типов данных. typedef vector<wstring> word_vector; typedef wstring::const_iterator citer;
// Функция сравнения как и у Вас для букв и цифр. int (*cmp_func)(wint_t) = iswalnum;
// Гласные буквы. Можете добавить сюда для других языков. const wstring VOWELS = L"aeiouy";
// Разбивает строку на слова используя нашу функцию сравнения word_vector parse_str(const wstring&
str) { word_vector result;
// Начало слова citer begin = find_if(str.begin(), str.end(), pointer_to_unary_function<wint_t, int>(cmp_func)), end; while (begin != str.end()) { // Конец слова end = find_if(begin, str.end(), not1(pointer_to_unary_function<wint_t, int>(cmp_func))); // Cохраняем слово result.push_back(wstring(begin, end)); // Ищем дальше begin = find_if(end, str.end(), pointer_to_unary_function<wint_t,
int>(cmp_func)); } return result; }
// Разбивает строку на слова начинающиеся с гласных word_vector parse_str_vowels(const wstring& str) { word_vector result;
citer begin = str.begin(), end; begin = find_if(str.begin(), str.end(), pointer_to_unary_function<wint_t, int>(cmp_func)); while (begin != str.end()) { end = find_if(begin, str.end(), not1(pointer_to_u
nary_function<wint_t, int>(cmp_func))); // Слово wstring word(begin, end); // Проверяем начинается ли с гласной if (VOWELS.find(towlower(word[0])) != wstring::npos) { // Если да то сохраняем result.push_back(word); } begin = find_if(end, str.end(), pointer_to_unary_function<wint_t, int>(cmp_func)); } return result; }
// 1й вариант wcout << L"Вариант 1:" << endl; word_vector words = parse_str(str); copy(words.begin(), words.end(), ostream_iterator<wstring, wchar_t>(wcout, L"\n"));
// 2й вариант wcout << L"Вариант 2:" << endl;
words = parse_str_vowels(str); copy(words.begin(), words.end(), ostream_iterator<wstring, wchar_t>(wcout, L"\n"));
// 3й вариант wcout << L"Вариант 3:" << endl; words = parse_str_vowels(str); if (words.size()) { wcout << words[0] << endl; } else { wcout << L"Нет слов начинающихся с гласных" << endl; }
return 0; }
Пример
работы:
Код:
Введите строку: English is a West Germanic language that developed in England and south-eastern Scotland during the Anglo-Saxon era.
Вариант 1: English is a West G
ermanic language that developed in England and south eastern Scotland during the Anglo Saxon era Вариант 2: English is a in England and eastern Anglo era Вариант 3: English
То же самое без использования STL. По просьбе из мини-форума.
Отвечает Boriss, Академик :
Здравствуйте, Xrom1989. Вот, если я правильно Вас понял, то в приложении код Ежели нет, то пишите, исправлю, как надо Вид окна приложения:
----- Вывод - то место в тексте, где вы устали думать
Ответ отправил: Boriss, Академик
Ответ отправлен: 09.04.2010, 15:25
Номер ответа: 260723
Оценка ответа: 5 Комментарий к оценке: Очень благодарен. Кратко и понятно))
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 260723
на номер 1151 (Россия) |
Еще номера »
Вопрос № 177765:
Уважаемые эксперты, помогите в написании следующей программы на языке С++:
Написать, используя технику указателей, программу работы с базой отдела кадров. База размещается в текстовом файле произвольного размера. Каждая строка – запись об одном сотруднике.
Формат записи о сотруднике: Фамилия и инициалы (через точку) - 30 символов, фамилия начинается в 1-й позиции, Год рождения – 5 символов. Заработная плата (оклад) – 10 позиций.
Функции программы: Поиск
по заданному критерию, Дополнение записи, Исключение записи, Корректировка записи.
Отвечает Verena, Профессионал :
Здравствуйте, Sanches. Вот простейшая реализация, без контроля ввода и прочих красивостей, в этом смысле хорошо бы добавить проверки. Поиск сделала по имени или части имени. Условие про точку учла чисто условно, потому что не вижу в нём особого смысла. Если что-то не так, Вы всегда можете дополнить или расширить программу по аналогии. Указатели как факт используются - для работы со строками и файлами, хотя я и не уверена, что Вы это имели в виду. Речь могла идти о считывании файла в память, но это
нерационально и так обычно не делают. Если что-то не ясно, спрашивайте. Проверено на Visual Studio 2005. Удачи!
Приложение:
----- Эта история - не для истории, понимаешь?
Ответ отправил: Verena, Профессионал
Ответ отправлен: 14.04.2010, 01:26
Номер ответа: 260806
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 260806
на номер 1151 (Россия) |
Еще номера »
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.