#include <string>
#include <stdio.h>
bool word_contains_num(const std::string& word);
int _tmain(int argc, _TCHAR* argv[])
{
std::stringsource = "some string with3 a1 few wor4ds cont8aini4ng numbe224rs ";
std::string result = "";
std::stringword;
std::string::size_type src_len = source.length();
std::string::size_type cur_pos = 0;
std::string::size_type space_pos;
while (cur_pos <= src_len)
{
space_pos = source.find(' ', cur_pos);
if (-1 == space_pos)
space_pos = src_len + 1;
word = source.substr(cur_pos, space_pos - cur_pos);
if (!word_contains_num(word))
result += word + " ";
cur_pos = space_pos + 1;
}
// отрезаем последний пробел в строке. о там обязательно будет,
//если строка не пустая
if (!result.empty())
result = result.substr(0, result.length() - 2);
printf("Source string: %s\nResult string: %s\n", source.c_str(), result.c_str());
return 0;
}
bool word_contains_num(const std::string& word)
{
for (int i = 0 ; i < word.length() ; i++)
{
if ( isdigit(word) )
return true;
}
return false;
Другие языки программирования и технологии
из заданной последовательности слов, удалить слова, содержащие числа
Решение это самостоятельно. Вот подсказка.
Выделение слов из предлжжения.
S := S + ' '; {чтобы не потерять последнее слово}
while Pos(' ', S) > 0 do begin
S1 := Copy(S, 1, Pos(' ', S)-1);
{в S1 очередное слово}
Delete(S, 1, Pos(' ', S));
end;
Проверка слова на наличие цифр
HasNum := False; {предположим, цифр нет}
for i:=1 to Length(S1) do if (S1[ i ] < '0') or (S1[ i ] > '9') then begin HasNum := True; Break; end;
Формирование последовательности слов без цифр
if not HasNum then Sout := Sout + S1 + ' ';
Выделение слов из предлжжения.
S := S + ' '; {чтобы не потерять последнее слово}
while Pos(' ', S) > 0 do begin
S1 := Copy(S, 1, Pos(' ', S)-1);
{в S1 очередное слово}
Delete(S, 1, Pos(' ', S));
end;
Проверка слова на наличие цифр
HasNum := False; {предположим, цифр нет}
for i:=1 to Length(S1) do if (S1[ i ] < '0') or (S1[ i ] > '9') then begin HasNum := True; Break; end;
Формирование последовательности слов без цифр
if not HasNum then Sout := Sout + S1 + ' ';
Передай своему преподу, что он дебил и извращенец, раз заставляет работать со строками на сволочном язычке Паскале. На любом языке с поддержкой регэкспов это делается с полпинка. Например на Perl так:
$str = "text text tex3t";
@eax = $str =~ m/\b[A-Za-z]+\b/gi;
print join(" :: ", @eax);
$str = "text text tex3t";
@eax = $str =~ m/\b[A-Za-z]+\b/gi;
print join(" :: ", @eax);
Похожие вопросы
- Как сделать программу которая при вводе текста, удаляет из текста все слова, содержащие букву «я». (PascalABC)
- Написать в С++. Задан одномерный массив А из 10 чисел.
- как найти в массиве слова содержащие более 5 букв (делфи) подскажите алгоритм нахождения таких слов (делфи)
- Как удалить в строке числа но при етом оставить все буквы, JAVA
- Задан массив размером 30 элементов. Подсчитать число и сумму положительных элементов в нем. В Паскале. через рандом чисел !
- помогите решить задачи на паскале 1Во входном файле дана последовательность чисел. Требуется найти второе по величине чи
- помогите решить задачу Во входном файле дана последовательность чисел , число (количество чисел в после
- Найти сумму чисел, заканчивающихся цифрой 4, наибольшее из таких чисел, и номер этого числа в последовательности.
- Помогите найти алгоритм подбора множителей к числам заданного массива, сумма произведений которых равна заданному числу
- Вводится последовательность чисел. Посчитать в ней количество четных чисел, стоящих на четных местах.