Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 25.05.2009, 00:02
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

не знаю, но в любом случае я не вижу как может теория автоматов помочь мне в решении этой задачи

например, в педивикии написано, что "практически, теория автоматов применяется при разработке лексеров и парсеров для языков программирования, а также при построении компиляторов и разработке самих языков программирования"
Ответить с цитированием
  #12 (permalink)  
Старый 25.05.2009, 00:30
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

вы бы еще написали регулярку простейшую, и сказали бы что для решения этой задачи не нужно знания регулярок, подразумевая знание сложных регулярок.
вы описали кончный автомат.
в нем есть флаг состояния(предыдущий символ пробел или нет), и он анализирует строку символ за символ, и на основании обоих этих данных строит суждение о количестве слов.
все сходится с теорией конечного автомата.
то, что вы додумались до этого решения, не зная о конечных автоматах, не означает что они тут не были использованы.
Ответить с цитированием
  #13 (permalink)  
Старый 25.05.2009, 01:07
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

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

аналогия с регулярными выражениями неудачна, имхо

p.s. вроде на ты до этого говорили
Ответить с цитированием
  #14 (permalink)  
Старый 25.05.2009, 01:35
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от x-yuri
Я говорил, что не вижу как мне это знание может помочь
ну, ты можеш составить алгоритм, без знания лишних теорий.
потому что стиль мышления такой. и у меня такой же.
а вот, человек не смог. вот я и направил его учить теорию
тебе знание этой теории не нужно для такой простой задачи
а ему может быть поможет. надеюсь что так.

Сообщение от x-yuri
p.s. вроде на ты до этого говорили
Проблема, в том, что для меня стиль общения на "Вы" является естественным в интернете.
в особенности на форуме.
по сути безусловный рефлекс я бы даже сказал
для того чтобы общатся на ты, мне надо либо начать общатся лично с человеком, например в аське, либо знать его в реале
так что не обращай внимание на ВЫкание
Ответить с цитированием
  #15 (permalink)  
Старый 25.05.2009, 01:41
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
а ему может быть поможет. надеюсь что так.
ну если поможет - хорошо
Ответить с цитированием
  #16 (permalink)  
Старый 10.08.2009, 19:17
Интересующийся
Отправить личное сообщение для Photon Посмотреть профиль Найти все сообщения от Photon
 
Регистрация: 05.05.2009
Сообщений: 19

Конечно, несколько поздновато, но всё же..

Нафига тут конечные автоматы?
/*          
 * Функция подсчета количества символов и слов в тексте
 * obj      - id текстового поля, в которое вводится текст
 * obj_word - id поля, куда выводится количество слов
 * obj_char - id поля, куда выводится количество символов
 */
function count(obj, obj_word, obj_char) {
    var text = document.getElementById(obj).value;
    var char_cnt = text.length;
    while (text.indexOf('  ') != -1)
        text = text.replace('  ', ' ');
    if (char_cnt > 0) {
        var arWord = text.split(' ');
        var word_cnt = arWord.length;
    }
    else
        var word_cnt = 0;
    if(text.charAt(text.length - 1) == ' ')
        word_cnt--;
    document.getElementById(obj_word).value = word_cnt;
    document.getElementById(obj_char).value = char_cnt;
}
Ответить с цитированием
  #17 (permalink)  
Старый 11.08.2009, 01:27
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

ну я бы тогда начал с (хотя условие подразумевает проход по строке)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
    <title>title</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script>


        function count( s, word, char ) {

            var text = document.getElementById(s).value;
            document.getElementById(char).value = text.length;
            document.getElementById(word).value = text.replace(/^\s+/, '')
                                                      .replace(/\s+$/, '')
                                                      .split(/\s+/).length;
        }
</script>
</head>
<body>
    <input id="s" type="text">
    <input id="word" type="text">
    <input id="char" type="text">
    <input type="button" onclick="count('s', 'word', 'char');">
</body>
</html>
Ответить с цитированием
  #18 (permalink)  
Старый 11.08.2009, 02:11
Интересующийся
Отправить личное сообщение для Photon Посмотреть профиль Найти все сообщения от Photon
 
Регистрация: 05.05.2009
Сообщений: 19

Понятно, что с регулярками проще, но по заданию надо использовать indexOf() и charAt().
И, кстати, нигде в условии задачи я не увидел обязательного прохода по строке.

З.Ы. А вот про пробелы в начале строки я и не подумал..

Последний раз редактировалось Photon, 11.08.2009 в 02:14.
Ответить с цитированием
  #19 (permalink)  
Старый 11.08.2009, 04:08
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от Photon
И, кстати, нигде в условии задачи я не увидел обязательного прохода по строке.
я думаю, надо было ограничиться указанными методами/свойствами:
function count( s, word, char ) {

    var text = document.getElementById(s).value;
    document.getElementById(char).value = text.length;
    var i = 0, wordCnt = 0;
    while( i >= 0 ) {
        while( text.charAt(i) == ' ' ) 
            i++;
        if( i < text.length )
            wordCnt++;
        i = text.indexOf(' ', i);
    }
    document.getElementById(word).value = wordCnt;
}
Ответить с цитированием
  #20 (permalink)  
Старый 11.08.2009, 04:21
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

решение с конечными автоматами (это же оно?). Получилось неожиданно (для меня) симпатично. Gvozd, я их недооценивал Хоть и с регэкспами читабельнее
function count( s, word, char ) {

    var text = document.getElementById(s).value;
    document.getElementById(char).value = text.length;
    var prv = ' ', wordCnt = 0;
    for( var i=0; i<text.length; i++ ) {
        if( text.charAt(i) != ' ' &&   prv == ' ' )
            wordCnt++;
        prv = text.charAt(i);
    }
    document.getElementById(word).value = wordCnt;
}

UPD: похоже это все-таки не конечные автоматы

Последний раз редактировалось x-yuri, 14.08.2009 в 06:42.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
relative + fixed Помогите плиз( greatilya Internet Explorer 14 27.11.2008 03:29
помогите плиз chemax Общие вопросы Javascript 2 15.11.2008 11:06
Помогите с регуляркой... alexKniaz AJAX и COMET 0 03.11.2008 01:16
Помогите или подскажите где искать. designovermatter Общие вопросы Javascript 2 09.10.2008 18:12
помогите с меню Ribt Общие вопросы Javascript 0 20.09.2008 08:11