Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[Aлгоритм] Вывод слов и их размера из данного текста.

9.9K
27 апреля 2007 года
o1ps
51 / / 11.10.2006
Помогите пожалуйста воплотить в жизнь алгоритм по задаче:
Задан текст, состоящий из слов, записанных через запятые, и заканчивающийся точкой.
(Длина текста не больше 200 символов, могут быть использованы любые символы.
Словом считать последо-вательность символов, не содержащую пробел. Выдать слова текста и их длины.)
Для формирования строки по усмотрению пользователя использовать данный метод:
строка формируется из 5-тисимвольных слов, не содержащую букву s; (Необходимо получение массива кубов цифровых слов)

Очень озадачен данной задачей. Если вас не затруднит, можете хотя бы подсказать примерный алгоритм. Буду очень благодарен. Спасибо.
Страницы:
242
27 апреля 2007 года
Оlga
2.2K / / 04.02.2006
Цитата:
Задан текст, состоящий из слов, записанных через запятые, и заканчивающийся точкой.
(Длина текста не больше 200 символов, могут быть использованы любые символы.
Словом считать последо-вательность символов, не содержащую пробел. Выдать слова текста и их длины.)


насколько видно из описания, все слова разделены запятыми. разбей строку по символу ',', а там отбрось пробелы(они могут быть в начале и/или в конце полученной последовательности символов), дальше останется только вывести слово и его длину при помощи стандартных функций языка.

Цитата:
Для формирования строки по усмотрению пользователя использовать данный метод:
строка формируется из 5-тисимвольных слов, не содержащую букву s; (Необходимо получение массива кубов цифровых слов)


а это что, вторая задача? Если да - оформи как отдельную тему...

[COLOR=red]Если ты еще не читал мое личное сообщение, тогда загляни в ящик на форуме...[/COLOR]

9.9K
28 апреля 2007 года
o1ps
51 / / 11.10.2006
Вот полное условие задачи:

Задан текст, состоящий из слов, записанных через запятые, и заканчивающийся точкой. Длина текста не больше 200 символов, могут быть использованы любые символ. Словом считать последо-вательность символов, не содержащую пробел. Выдать слова текста и их длины. Для формирования строки по усмотрению пользователя выбрать один из методов:
1) сформировать строку из 5-тисимвольных слов, не содержащую букву s; получить массив кубов цифровых слов;
2) найти одинаковые 5-символьные слова и подсчитать число их повторений; получить массив ре-зультатов уменьшения цифровых слов в 3 раза;
3) в каждом 5-символьном слове переставить символы так, чтобы одинаковые находились рядом (sosna – ssona и т.д.); получить массив результатов увеличения на 23 цифровых слов;
4) сформировать новую строку, в которую включены только 5-символьные слова, с удалением из них литеры «А»; получить массив результатов возведения в квадрат цифровых слов;
5) сформировать новую строку, в которую включить такие 5-символьные слова, в которых символы расположены «по возрастанию»; найти первое цифровое слово и возвести его значение в квадрат.


------------------

нужно разработать просто 5 алгоритмов по методам нахождения. Помогите пожалуйста по тем, которые вы сможете. Буде очень благодарен.
7.8K
29 апреля 2007 года
Hrew
185 / / 23.04.2007
вот теперь совсем ничего не понятно.

1. Чем все-таки отделяется одно слово от другого - только пробелом, только запятой, пробелом или запятой, пробелом и запятой.

2. Что это за строка, которую Вы собрались формировать ("Для формирования строки по усмотрению пользователя....")? Результат работы алгоритма?

3. Что Вы имеете в виду под 5-символьными словами - непосредственно слово из пяти символов или подстроку из пяти символов? (Например, 'abcdef' - это совсем не пятисимвольное слово и его нужно пропустить, или из него можно выделить два пятисимвольных слова - 'abcde' и 'bcdef' ?)

4. Что Вы имеете в виду под 'цифровыми словами'? Слова, состоящие только из цифр? Если да, то как нужно, например, 'уменьшить цифровое слово в 3 раза' если оно не делится на 3? Есть ли ограничения на длину цифровых слов или они могут состоять из любого количества цифр?
242
29 апреля 2007 года
Оlga
2.2K / / 04.02.2006
o1ps, идеальный вариант, если ты задашь конкретно, что тебе непонятно. если будет время, смогу немного помочь кодом на С может каким то псевдокодом или объяснением.

Hrew
насколько я поняла задан текст, слова в котором разделены запятой. А дальше у нас есть подзадачи(всего 5 пунктов), которые по требованию пользователей должна выполнять программа.
Например 1:
Цитата:
1) сформировать строку из 5-тисимвольных слов, не содержащую букву s; получить массив кубов цифровых слов;


нам надо из имеющихся слов в вышеупомянотом тексте сформировать строку из 5 слов. слова данной строки может содержать любые символы кроме символа 's'. несовсем понятно какой разделитель надо брать для сформированной строки, но в любом случае это подправить пустяки.
цифрофые слова - это видимо слова содержащие только цифры. наша задача сконвертировать их в числа, возвести в степень 3, а результат записать как строку в массив строк. кончно написанно несколько туманно. непонятно должны ли мы проверять все слова текста, или только те, которые попадут в сформированное предложение ...

9.9K
03 мая 2007 года
o1ps
51 / / 11.10.2006
Хорошо. Подскажите алгоритм выборки слов из 5 символов, чтобы в них не было буквы "s"?
22K
03 мая 2007 года
Gloms
34 / / 03.05.2007
Добрые и сообразительные люди. Помогите написать алгоритм, основанный на выборке из текста (ограничен 100 символами).
Необходимо сформировать строку из символов определенной длины, допустим 6 ("форум"), а далее преобразоввывать эту строку, т.е. в найденных словах удалять букву "ф".
Подскажите пожалуйста. Очень благодарен буду помощникам.
242
04 мая 2007 года
Оlga
2.2K / / 04.02.2006
1 - рзбиваем текст на слова
2 - идем по массиву слов:
если длина слова 5 символов, тогда проверяем если в нем буква s, если нет - делаем со словом что нужно.
Код:
[COLOR="DarkGreen"]//C#[/COLOR]
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);
}
242
04 мая 2007 года
Оlga
2.2K / / 04.02.2006
я так и не поняла что делать надо. Есть текст - это ясно, максимум 100 символов. А вот дальше:
Цитата:
Необходимо сформировать строку из символов определенной длины


какая длина может быть у символа, лично мне непонятно. может речь о словах? а что в исходном тексте записано? просто бессмысленный набор символов?

Цитата:
допустим 6 ("форум")


в слове форум 5 букв, или можно сказать 5 символов.
желательно нормальный пример, что тебе надо сделать и [COLOR="Purple"]язык программирования укажи[/COLOR].

22K
05 мая 2007 года
Gloms
34 / / 03.05.2007
Извиняюсь, действительно 5 букв.
Насчет образования строки - просто вывод этого массива из слов на экран.
22K
05 мая 2007 года
Gloms
34 / / 03.05.2007
а если потребуется из вообще найденных 5-символьных слов удалить букву "А", то как тогда поступить?! Подскажите пожалуйста.
22K
05 мая 2007 года
Gloms
34 / / 03.05.2007
Задан текст, состоящий из слов, записанных через запятые, и заканчивающийся точкой. Длина текста не больше 200 символов, могут быть использованы любые символ. Словом считать последовательность символов, не содержащую пробел. Выдать слова текста и их длины. Для формирования строки использовать данный метод:


сформировать новую строку, в которую включить такие 5-символьные слова, в которых символы расположены «по возрастанию»; найти первое цифровое слово и возвести его значение в квадрат.


Помогите пожалуйста реализовать данный алгоритм. Буду признателен и очень благодарен.
242
05 мая 2007 года
Оlga
2.2K / / 04.02.2006
неужели трудно нормально написать, что тебе надо? мне задание непонятно.
242
05 мая 2007 года
Оlga
2.2K / / 04.02.2006
Цитата: Gloms
а если потребуется из вообще найденных 5-символьных слов удалить букву "А", то как тогда поступить?! Подскажите пожалуйста.


все зависит от языка. ручками убрать самому символ, ИМХО, не проблема - в С я так и сделала бы. в С# у класса string есть готовая функция Remove(), при помощи той же функции IndexOf() узнаем есть ли буква 'а' в слове и есть ли есть - удаляем. я Фортран не знаю, но думаю там подобные функции тоже есть, просто надо сесть и почитать о работе со строками, тогда половина, а то и все вопросы отпадут.

242
05 мая 2007 года
Оlga
2.2K / / 04.02.2006
Gloms
[COLOR="SeaGreen"]код на С:[/COLOR]
 
Код:
char str[] = "absadfa";
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];
257
05 мая 2007 года
kosfiz
1.6K / / 18.09.2005
OlgaKr
в фортране есть аналог IndexOf это Index, но вот аналога Remove что-то не припомню, но это не страшно там есть определенный набор функций с помощью которого можно сделать совй Remove. впринципе там и ручками можно, можно твой код взять и легко переделать на фортран.
257
05 мая 2007 года
kosfiz
1.6K / / 18.09.2005
[quote=OlgaKr]неужели трудно нормально написать, что тебе надо? мне задание непонятно.[/quote]
помоему задание такое:
дан произвольный текст. этот текст надо разделить на слова определенной длины и вывести их на экран. затем преобразовать каждое слово так, что если в нем есть определенный символ, то его надо удалить и опять вывести уже преобразованные слова на экран. вообщем что-то в этом роде, наверное.
Gloms
а язык какой? рекомендации по решению задачи проще давать будет.
257
05 мая 2007 года
kosfiz
1.6K / / 18.09.2005
вопрос: Бертеньева О.В. почитывал?
это я к тому, что в одной из его книг, посвященных программированию на фортране есть глава "Выделение слов из строки текста". и то что написано в этой главе относится к
[quote=Gloms]Задан текст, состоящий из слов, записанных через запятые, и заканчивающийся точкой. Длина текста не больше 200 символов, могут быть использованы любые символ. Словом считать последовательность символов, не содержащую пробел. Выдать слова текста и их длины.[/quote]
так что вперед в полезные ссылки в разделе студенты(не просто так же назвали так ту темку) и ищем книгу по фортрану Современный Фортран О.В. Бертеньев.
[quote=Gloms]сформировать новую строку, в которую включить такие 5-символьные слова, в которых символы расположены &#171;по возрастанию&#187;; найти первое цифровое слово и возвести его значение в квадрат.[/quote]
прочитай главу про работу с символьными данными и строками в посоветованной мной книге. как все сделаешь будет проще тебе советовать что-то.
22K
06 мая 2007 года
Gloms
34 / / 03.05.2007
В этой книжке описаны основные особенности Фортрана. Но ничего подобного по выбоке слов из текста там нет.
22K
06 мая 2007 года
Gloms
34 / / 03.05.2007
Вообще вся проблема в том, что мне нужен обычный алгоритм и я не могу его составить.
Есть обычный текст, пусть это будет файл txt в котором например детектив Шерлока Холмса.

Мне необходим алгоритм, который бы реализовал выборку из всего текста слов длины 5 символов, и алгоритм, который бы находил только цифры. Помогите пожалуйста его составить. Буду очень благодарен.
257
06 мая 2007 года
kosfiz
1.6K / / 18.09.2005
чтобы не показаться голословным выложил в архиве две страницы из данной книги Бертеньева относящиеся к "Выделение слов из строки текста"
257
06 мая 2007 года
kosfiz
1.6K / / 18.09.2005
ну так смотри ты выделяешь из текста слова(в другой твоей теме я выложил архив с этим делом), потом проверяешь с помощью функции LEN(в фортране) длину слова и если длина слова равна 5 символам, то слово оставляешь, если что-то другое - отсеиваешь.
[quote=Gloms]и алгоритм, который бы находил только цифры[/quote]
в этой теме ты не писал про цифры. т.е. тебе надо как-то распознавать обозначает слово число или нет, т.е. например: "два" - это то, что тебе нужно? ну тогда можно попробовать создать какой-нибудь эталонный массив таких слов и проверять каждое выделяемое слово входит оно в твой эталонный массив или нет. вообщем пока все, может потом еще что придумаю.
242
06 мая 2007 года
Оlga
2.2K / / 04.02.2006
насчет нахождения чисел:
число это слово, которое состоит из символов от '0' ... '9', если речь идет о десятеричной системе счисления. помоему не трудно написать функцию, которая будет определять является ли слово числом - просто перебрать каждый символ и если все символы цифровые, тогда данное слово и есть число...
а если речь о нахождении цифр, тогда ищем слово из одного символа, которое может состоять из символа в диапозоне '0' ... '9'.
622
06 мая 2007 года
nilbog
507 / / 19.12.2006
Цитата: kosfiz
"два" - это то, что тебе нужно?


не - это ты перегнул ))
все таки я не разу не слышал чтобы "два" называли цифрой

257
06 мая 2007 года
kosfiz
1.6K / / 18.09.2005
[quote=nilbog]не - это ты перегнул ))
все таки я не разу не слышал чтобы "два" называли цифрой[/quote]
)) см. толковый словарь Ожегова и Шведовой, там ясно написано)). слово "два" обозначает цифру или число или количество. дело в том, что я подумал что может быть надо будет искать слова обозначающие числа или цифры(было что-то подобное), потом их переводить, например: "два"<->2, а потом с 2 делаем то, что нужно. вообще числовые слова или что-то в этом роде понять можно по разному.
22K
07 мая 2007 года
Gloms
34 / / 03.05.2007
цифрой или цифровым словом считать например 1, 2, 3, ... 100,.. 200 ну вы поняли =)
22K
07 мая 2007 года
Gloms
34 / / 03.05.2007
Признаю промах.. но проце было назвать номер темы. А можно поинтресоваться как вот мы нашли 5 символьные слова. А необходимы слова, не содержащие буквы "s". Как будет выглядеть алгоритм на отсеивание данного критерия?! Помогите пожалуйста.
2.1K
07 мая 2007 года
elan
56 / / 10.04.2003
Вообще-то такие задачи решаются с помощью конечных автоматов.
В данном случае, он имел бы 2 состояния:
0 - ожидание первого символа слова
1 - чтение символов текущего слова

Входной альфавит:
1 - буква
2 - цифра
3 - пробел или запятая
4 - точка

8 вспомогательных переменных:

state - текущее состояние автомата (0 или 1)
c - текущий символ
priorC - пред.символ
isSeq - =true, если все прочтенные на данном этапе символы текущего слова, больше от предшествующих им символам.
isAlphaExist - =true, если при чтении символов текущего слова, встретилась хоть одна буква
isFirstNum -=true, если в ходе чтения символов, уже было прочитано первое число.
isSExist -=true, если среди прочтенных символов текущего слова встречалась буква s/S.
wordlen - количество прочтенных символов текущего слова.
257
07 мая 2007 года
kosfiz
1.6K / / 18.09.2005
ну так по выделению слов инфу тебе уже подкинул, по числовым словам тоже (см. сообщение OlgaKr). т.е. выделил все слова а потом проверяешь числовые они или нет так, как предложила Ольга.
257
07 мая 2007 года
kosfiz
1.6K / / 18.09.2005
[quote=Gloms]Как будет выглядеть алгоритм на отсеивание данного критерия?![/quote]
итак, у тебя есть слова и теперь нужно отсеять лишние. воспользуйся для этого функцией index фортрана, т.е. все будет выглядеть как-то так:
 
Код:
if (index(st,'s').EQ.0) then  //st - строка, которая проверяется на наличие 's'
//здесь выполняем что-то, если символа 's' в строке нет
else
//здесь выполняется что-то если символ присутствует в строке
end if
22K
07 мая 2007 года
Gloms
34 / / 03.05.2007
Цитата: kosfiz
итак, у тебя есть слова и теперь нужно отсеять лишние. воспользуйся для этого функцией index фортрана, т.е. все будет выглядеть как-то так:
 
Код:
if (index(st,'s').EQ.0) then  //st - строка, которая проверяется на наличие 's'
//здесь выполняем что-то, если символа 's' в строке нет
else
//здесь выполняется что-то если символ присутствует в строке
end if



Спасибо.

А можешь пожалуйста подсказать код нахождения в тексте цифр? (ну или хотя бы алгоритм их нахождения)

22K
07 мая 2007 года
Gloms
34 / / 03.05.2007
Если ты по поводу этого:

насчет нахождения чисел:
число это слово, которое состоит из символов от '0' ... '9', если речь идет о десятеричной системе счисления. помоему не трудно написать функцию, которая будет определять является ли слово числом - просто перебрать каждый символ и если все символы цифровые, тогда данное слово и есть число...
а если речь о нахождении цифр, тогда ищем слово из одного символа, которое может состоять из символа в диапозоне '0' ... '9'.

то можете пожалуйста подсказать как это выразить в переменных, пожалуйста.
9.9K
07 мая 2007 года
o1ps
51 / / 11.10.2006
Можете пожалуйста подсказать алгоритм нахождения одинаковыx 2-символьныx словx и подсчитать число их повторений. Если не затруднит то в виде переменных. Буду очень благодарен.
9.9K
07 мая 2007 года
o1ps
51 / / 11.10.2006
У меня похожая проблема. Действительно помогите пожалуйста выразить данный алгоритм в виде переменных.
257
07 мая 2007 года
kosfiz
1.6K / / 18.09.2005
вот такая вот функция:
Код:
LOGICAL function IsNumber(s)
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. и эта функция служит для определения только целых чисел.
использовать так:
 
Код:
LOGICAL b
..............
b=IsNumber(st) //st - строка(слово) для проверки

результат в b.
257
07 мая 2007 года
kosfiz
1.6K / / 18.09.2005
смотри другую свою темку. зачем вообще так разделил? надо было бы в одной все и обсуждать.
257
07 мая 2007 года
kosfiz
1.6K / / 18.09.2005
так вот функция для определения того одинаковы ли два слова:
 
Код:
LOGICAL function IsEq(s1,s2)
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

пример использования:
 
Код:
LOGICAL b;
b=IsEq(st1,st2) //st1 & st2 сравниваемые слова

собственно тебе нужно пройтись по массиву слов и сравнивать их, если одинаковы то увеличивать значение какой-то переменной на 1 и так все слова(повторяющееся слово можно заменить пробелом или удалить), потом после прохождения внешнего цикла вывести результат по кол-ву нахождений того или иного слова и переменную свою обнулить, т.е. потребуется два вложенных цикла, вроде.
9.9K
07 мая 2007 года
o1ps
51 / / 11.10.2006
А если вас не затруднит, помогите с упорядочением найденных слов в алфавитном порядке.
9.9K
07 мая 2007 года
o1ps
51 / / 11.10.2006
дело в том, что найденное так же необходимо упорядочить во возрастанию, но не так важно.
Проблема в том, что я бы вас очень просил помочь создать именно простой алгоритм с переменными нахождения этих чисел, а не код от программы. Если можете, помогите пожалуйста.
257
07 мая 2007 года
kosfiz
1.6K / / 18.09.2005
допустим у тебя есть массив со словами, тогда ты можешь сделать так(на примере массива из пяти слов и это так сказать решение влоб):
 
Код:
integer i,j
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.
257
07 мая 2007 года
kosfiz
1.6K / / 18.09.2005
[quote=o1ps]создать именно простой алгоритм с переменными нахождения этих чисел, а не код от программы[/quote]
я так понял код тебе не нужен, нужен алгоритм. но что значит выделенная мной фраза, что-то я не пойму, особенно "с переменными назождения этих чисел".

P.S. старею я видать, перестаю по-тихоньку понимать:)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог