[Aлгоритм] Вывод слов и их размера из данного текста.
Задан текст, состоящий из слов, записанных через запятые, и заканчивающийся точкой.
(Длина текста не больше 200 символов, могут быть использованы любые символы.
Словом считать последо-вательность символов, не содержащую пробел. Выдать слова текста и их длины.)
Для формирования строки по усмотрению пользователя использовать данный метод:
строка формируется из 5-тисимвольных слов, не содержащую букву s; (Необходимо получение массива кубов цифровых слов)
Очень озадачен данной задачей. Если вас не затруднит, можете хотя бы подсказать примерный алгоритм. Буду очень благодарен. Спасибо.
(Длина текста не больше 200 символов, могут быть использованы любые символы.
Словом считать последо-вательность символов, не содержащую пробел. Выдать слова текста и их длины.)
насколько видно из описания, все слова разделены запятыми. разбей строку по символу ',', а там отбрось пробелы(они могут быть в начале и/или в конце полученной последовательности символов), дальше останется только вывести слово и его длину при помощи стандартных функций языка.
строка формируется из 5-тисимвольных слов, не содержащую букву s; (Необходимо получение массива кубов цифровых слов)
а это что, вторая задача? Если да - оформи как отдельную тему...
[COLOR=red]Если ты еще не читал мое личное сообщение, тогда загляни в ящик на форуме...[/COLOR]
Задан текст, состоящий из слов, записанных через запятые, и заканчивающийся точкой. Длина текста не больше 200 символов, могут быть использованы любые символ. Словом считать последо-вательность символов, не содержащую пробел. Выдать слова текста и их длины. Для формирования строки по усмотрению пользователя выбрать один из методов:
1) сформировать строку из 5-тисимвольных слов, не содержащую букву s; получить массив кубов цифровых слов;
2) найти одинаковые 5-символьные слова и подсчитать число их повторений; получить массив ре-зультатов уменьшения цифровых слов в 3 раза;
3) в каждом 5-символьном слове переставить символы так, чтобы одинаковые находились рядом (sosna – ssona и т.д.); получить массив результатов увеличения на 23 цифровых слов;
4) сформировать новую строку, в которую включены только 5-символьные слова, с удалением из них литеры «А»; получить массив результатов возведения в квадрат цифровых слов;
5) сформировать новую строку, в которую включить такие 5-символьные слова, в которых символы расположены «по возрастанию»; найти первое цифровое слово и возвести его значение в квадрат.
------------------
нужно разработать просто 5 алгоритмов по методам нахождения. Помогите пожалуйста по тем, которые вы сможете. Буде очень благодарен.
1. Чем все-таки отделяется одно слово от другого - только пробелом, только запятой, пробелом или запятой, пробелом и запятой.
2. Что это за строка, которую Вы собрались формировать ("Для формирования строки по усмотрению пользователя....")? Результат работы алгоритма?
3. Что Вы имеете в виду под 5-символьными словами - непосредственно слово из пяти символов или подстроку из пяти символов? (Например, 'abcdef' - это совсем не пятисимвольное слово и его нужно пропустить, или из него можно выделить два пятисимвольных слова - 'abcde' и 'bcdef' ?)
4. Что Вы имеете в виду под 'цифровыми словами'? Слова, состоящие только из цифр? Если да, то как нужно, например, 'уменьшить цифровое слово в 3 раза' если оно не делится на 3? Есть ли ограничения на длину цифровых слов или они могут состоять из любого количества цифр?
Hrew
насколько я поняла задан текст, слова в котором разделены запятой. А дальше у нас есть подзадачи(всего 5 пунктов), которые по требованию пользователей должна выполнять программа.
Например 1:
нам надо из имеющихся слов в вышеупомянотом тексте сформировать строку из 5 слов. слова данной строки может содержать любые символы кроме символа 's'. несовсем понятно какой разделитель надо брать для сформированной строки, но в любом случае это подправить пустяки.
цифрофые слова - это видимо слова содержащие только цифры. наша задача сконвертировать их в числа, возвести в степень 3, а результат записать как строку в массив строк. кончно написанно несколько туманно. непонятно должны ли мы проверять все слова текста, или только те, которые попадут в сформированное предложение ...
Необходимо сформировать строку из символов определенной длины, допустим 6 ("форум"), а далее преобразоввывать эту строку, т.е. в найденных словах удалять букву "ф".
Подскажите пожалуйста. Очень благодарен буду помощникам.
2 - идем по массиву слов:
если длина слова 5 символов, тогда проверяем если в нем буква s, если нет - делаем со словом что нужно.
static void Main(string[] args)
{
string text = "absdq, wereq, ppppp, dsdsa, ffffff, qqeqq, kklsa, 124rt, 78123, 12345";
[COLOR="Green"] //рзбиваем строку на слова функцией Сплит, а результат сохраняем в массиве words[/COLOR]
string []words = text.Split(',');
[COLOR="#008000"] //строка для сохранения 5-ти символьных слов[/COLOR]
string rez = "";
[COLOR="#008000"] //проходим по массиву words[/COLOR]
foreach(string word in words)
{
[COLOR="SeaGreen"]//функция Трим убирает незначащии пробелы в конце и в начале слова[/COLOR]
if(word.Trim().Length == 5 && word.IndexOf('s') == -1)
{
rez += word.Trim() + ' ';
}
}
Console.WriteLine(rez);
}
какая длина может быть у символа, лично мне непонятно. может речь о словах? а что в исходном тексте записано? просто бессмысленный набор символов?
в слове форум 5 букв, или можно сказать 5 символов.
желательно нормальный пример, что тебе надо сделать и [COLOR="Purple"]язык программирования укажи[/COLOR].
Насчет образования строки - просто вывод этого массива из слов на экран.
сформировать новую строку, в которую включить такие 5-символьные слова, в которых символы расположены «по возрастанию»; найти первое цифровое слово и возвести его значение в квадрат.
Помогите пожалуйста реализовать данный алгоритм. Буду признателен и очень благодарен.
все зависит от языка. ручками убрать самому символ, ИМХО, не проблема - в С я так и сделала бы. в С# у класса string есть готовая функция Remove(), при помощи той же функции IndexOf() узнаем есть ли буква 'а' в слове и есть ли есть - удаляем. я Фортран не знаю, но думаю там подобные функции тоже есть, просто надо сесть и почитать о работе со строками, тогда половина, а то и все вопросы отпадут.
[COLOR="SeaGreen"]код на С:[/COLOR]
int n = strlen(str);
for(int i = 0; str; ++i)
if(str == 'a')
for(int j = i + 1; j <= n; ++j)
str[j-1] = str[j];
в фортране есть аналог IndexOf это Index, но вот аналога Remove что-то не припомню, но это не страшно там есть определенный набор функций с помощью которого можно сделать совй Remove. впринципе там и ручками можно, можно твой код взять и легко переделать на фортран.
помоему задание такое:
дан произвольный текст. этот текст надо разделить на слова определенной длины и вывести их на экран. затем преобразовать каждое слово так, что если в нем есть определенный символ, то его надо удалить и опять вывести уже преобразованные слова на экран. вообщем что-то в этом роде, наверное.
Gloms
а язык какой? рекомендации по решению задачи проще давать будет.
это я к тому, что в одной из его книг, посвященных программированию на фортране есть глава "Выделение слов из строки текста". и то что написано в этой главе относится к
[quote=Gloms]Задан текст, состоящий из слов, записанных через запятые, и заканчивающийся точкой. Длина текста не больше 200 символов, могут быть использованы любые символ. Словом считать последовательность символов, не содержащую пробел. Выдать слова текста и их длины.[/quote]
так что вперед в полезные ссылки в разделе студенты(не просто так же назвали так ту темку) и ищем книгу по фортрану Современный Фортран О.В. Бертеньев.
[quote=Gloms]сформировать новую строку, в которую включить такие 5-символьные слова, в которых символы расположены «по возрастанию»; найти первое цифровое слово и возвести его значение в квадрат.[/quote]
прочитай главу про работу с символьными данными и строками в посоветованной мной книге. как все сделаешь будет проще тебе советовать что-то.
Есть обычный текст, пусть это будет файл txt в котором например детектив Шерлока Холмса.
Мне необходим алгоритм, который бы реализовал выборку из всего текста слов длины 5 символов, и алгоритм, который бы находил только цифры. Помогите пожалуйста его составить. Буду очень благодарен.
[quote=Gloms]и алгоритм, который бы находил только цифры[/quote]
в этой теме ты не писал про цифры. т.е. тебе надо как-то распознавать обозначает слово число или нет, т.е. например: "два" - это то, что тебе нужно? ну тогда можно попробовать создать какой-нибудь эталонный массив таких слов и проверять каждое выделяемое слово входит оно в твой эталонный массив или нет. вообщем пока все, может потом еще что придумаю.
число это слово, которое состоит из символов от '0' ... '9', если речь идет о десятеричной системе счисления. помоему не трудно написать функцию, которая будет определять является ли слово числом - просто перебрать каждый символ и если все символы цифровые, тогда данное слово и есть число...
а если речь о нахождении цифр, тогда ищем слово из одного символа, которое может состоять из символа в диапозоне '0' ... '9'.
не - это ты перегнул ))
все таки я не разу не слышал чтобы "два" называли цифрой
все таки я не разу не слышал чтобы "два" называли цифрой[/quote]
)) см. толковый словарь Ожегова и Шведовой, там ясно написано)). слово "два" обозначает цифру или число или количество. дело в том, что я подумал что может быть надо будет искать слова обозначающие числа или цифры(было что-то подобное), потом их переводить, например: "два"<->2, а потом с 2 делаем то, что нужно. вообще числовые слова или что-то в этом роде понять можно по разному.
В данном случае, он имел бы 2 состояния:
0 - ожидание первого символа слова
1 - чтение символов текущего слова
Входной альфавит:
1 - буква
2 - цифра
3 - пробел или запятая
4 - точка
8 вспомогательных переменных:
state - текущее состояние автомата (0 или 1)
c - текущий символ
priorC - пред.символ
isSeq - =true, если все прочтенные на данном этапе символы текущего слова, больше от предшествующих им символам.
isAlphaExist - =true, если при чтении символов текущего слова, встретилась хоть одна буква
isFirstNum -=true, если в ходе чтения символов, уже было прочитано первое число.
isSExist -=true, если среди прочтенных символов текущего слова встречалась буква s/S.
wordlen - количество прочтенных символов текущего слова.
итак, у тебя есть слова и теперь нужно отсеять лишние. воспользуйся для этого функцией index фортрана, т.е. все будет выглядеть как-то так:
//здесь выполняем что-то, если символа 's' в строке нет
else
//здесь выполняется что-то если символ присутствует в строке
end if
//здесь выполняем что-то, если символа 's' в строке нет
else
//здесь выполняется что-то если символ присутствует в строке
end if
Спасибо.
А можешь пожалуйста подсказать код нахождения в тексте цифр? (ну или хотя бы алгоритм их нахождения)
насчет нахождения чисел:
число это слово, которое состоит из символов от '0' ... '9', если речь идет о десятеричной системе счисления. помоему не трудно написать функцию, которая будет определять является ли слово числом - просто перебрать каждый символ и если все символы цифровые, тогда данное слово и есть число...
а если речь о нахождении цифр, тогда ищем слово из одного символа, которое может состоять из символа в диапозоне '0' ... '9'.
то можете пожалуйста подсказать как это выразить в переменных, пожалуйста.
character (len=*)s
integer i,j
j=0
do i=1,LEN_TRIM(s)
if (iachar(s(i:i))<48.or.iachar(s(i:i))>57) then
j=j+1
end if
end do
if (j==0) then
IsNumber=.true.
else
IsNumber=.false.
end if
end
если передашь строку например: "93" и т.п., то результат будет true, если скажем "534ф3" результат будет false. и эта функция служит для определения только целых чисел.
использовать так:
..............
b=IsNumber(st) //st - строка(слово) для проверки
результат в b.
character (len=*)s1
character (len=*)s2
IsEq=.false.
if (index(s1,s2).eq.1) then
if (LEN_TRIM(s1).eq.LEN_TRIM(s2)) then
IsEq=.true.
end if
end if
end
пример использования:
b=IsEq(st1,st2) //st1 & st2 сравниваемые слова
собственно тебе нужно пройтись по массиву слов и сравнивать их, если одинаковы то увеличивать значение какой-то переменной на 1 и так все слова(повторяющееся слово можно заменить пробелом или удалить), потом после прохождения внешнего цикла вывести результат по кол-ву нахождений того или иного слова и переменную свою обнулить, т.е. потребуется два вложенных цикла, вроде.
Проблема в том, что я бы вас очень просил помочь создать именно простой алгоритм с переменными нахождения этих чисел, а не код от программы. Если можете, помогите пожалуйста.
do i=1,4
do j=i+1,5
if (words(i)>words(j)) then
temp=words(i)
words(i)=words(j)
words(j)=temp
end if
end do
end do
вот как-то так и организуй только вместо 5 поставь колчиство слов в твоём массиве, а вместо 4 кол-во слов в массиве минус 1.
я так понял код тебе не нужен, нужен алгоритм. но что значит выделенная мной фраза, что-то я не пойму, особенно "с переменными назождения этих чисел".
P.S. старею я видать, перестаю по-тихоньку понимать:)