Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2010, 08:35   #1
Denis12
 
Регистрация: 01.06.2010
Сообщений: 3
Вопрос Строки

Составить программу, которая читает построчно текст другой программы ( ввести с клавиатуры ) на языке Pascal, подсчитывает количество ключевых слов «begin» и «end» и выводит на экран соответствующее сообщение.
Denis12 вне форума Ответить с цитированием
Старый 01.06.2010, 08:42   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну закидываешь в массив и циклом по элементом массива функцией pos отлавливаешь нужные слова.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 01.06.2010, 08:55   #3
Denis12
 
Регистрация: 01.06.2010
Сообщений: 3
По умолчанию

напиши текст программы
Denis12 вне форума Ответить с цитированием
Старый 01.06.2010, 09:11   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Utkin
Ну закидываешь в массив и циклом по элементом массива функцией pos отлавливаешь нужные слова.
Utkin, это далеко не так просто! (если делать правильно, то, как минимум надо разбирать программу на лексемы (писать лексический анализатор)...

Как минимум, хотя бы надо разбирать строку на отдельные слова...

Вот, например, определите, сколько в данном фрагменте программы (РАБОЧЕЙ, заметьте, программы) встречается КЛЮЧЕВОЕ слово begin

Код:
begin
   { тут 
         begin 
      начался }
   MyStartBegin := IntToStr(iBegin)+'begin';

p.s. хотя, с таким подходом:
Цитата:
Сообщение от Denis12
напиши текст программы
может ему больше и не надо ничего...

Последний раз редактировалось Serge_Bliznykov; 01.06.2010 в 09:13.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.06.2010, 09:23   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Все это просто, главное вопрос организации. Нужно продумать набор небольших функций и все дела .
Ну для начала, закинуть в массив.
Потом откинуть все пустые строки и строки начинающиеся с //
Затем откинуть в строках все что идет после // (вместе с самими //)
Преобразовать к верхнему (ну или нижнему) регистру
Считать посимвольно (раз pos не хотите), считая при этом одинарные кавычки и т.д.
Сами по себе функции-то не сложные и независимые друг от друга . А значит их легко писать и отлаживать. Просто их надо чуть больше чем все сваливать в одну кучу и без комментариев. Что-то вроде своего личного АПИ по решению конкретной проблемы.

И лексемы не нужны...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 01.06.2010, 09:30   #6
Denis12
 
Регистрация: 01.06.2010
Сообщений: 3
По умолчанию

спасиб за алгоритм!
Denis12 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
Удаление элементов строки s2 из строки s1 Ueshua Общие вопросы C/C++ 4 20.12.2009 13:06
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10
Строки. Как вывести часть строки? Anfall Общие вопросы Delphi 7 26.02.2009 09:10
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27