Задача 7 (6 баллов)
   Измените  определение  задачи 6 таким образом, чтобы в  новом
определении:

   1) текст всегда  начинался словом, первая буква которого заг-
      лавная, то есть текст обязан начинаться с буквы "М" или "А";
   2) внутри текста заглавных букв быть не должно;
   3) слово не должно состоять из одной буквы.

   Напишите программу для Кукарачи, которая проверяет,  является
ли запись на его поле текстом в смысле нового определения.
   В начальный  момент  исполнитель  расположен перед кубиками с
записью во второй строке:
                         ¤запись
   Если проверяемая запись - текст, установить исполнитель в ко-
нец записи:
                         запись¤
   Если запись -  не текст, поставить исполнитель под первым не-
верным символом:
                         запись
                           ¤

Решение куратора
-----------------

<текст>       := <Буква><слово>.|<Буква><слово><разделитель><текст1>
<текст1>      := <буква><слово>.|<буква><слово><разделитель><текст1>
<слово>       := <буква>|<слово><буква>
<разделитель> := _|,
<буква>       := а|м
<Буква>       := А|М

                             остальное
                    ( вход )────────────>(ошибка)
                       │                    ^
                       │А М                 │
                       V     остальное      │
      ┌────────────>(двойка)────────────────┤
      │                │                    ^
  а м │                │а м                 │
      │        _ ,     V     остальное      │
(разделитель)<─────( слово )────────────>───┤
      │            ^   │ │                  │
      │остальное   │   │ │                  │
      │            │а м│ │.                 │
      │            └───┘ │                  │
      V                  │                  ^
   (ошибка)           ┌──┘                  │
                      V      остальное      │
                   (конец? )────────────────┘
                      │
                      │
                      V
                   (текст  )

ЭТО вход
  шаг                                  
  ЕСЛИ       А  ТО двойка
  ИНАЧЕ ЕСЛИ М  ТО двойка
  ИНАЧЕ            ошибка              
КОНЕЦ                                  

ЭТО двойка
  шаг                                  
  ЕСЛИ       а  ТО слово
  ИНАЧЕ ЕСЛИ м  ТО слово
  ИНАЧЕ            ошибка
КОНЕЦ                                  

ЭТО слово                              
  шаг
  ЕСЛИ       а  ТО слово
  ИНАЧЕ ЕСЛИ м  ТО слово
  ИНАЧЕ ЕСЛИ _  ТО разделитель
  ИНАЧЕ ЕСЛИ ,  ТО разделитель
  ИНАЧЕ ЕСЛИ .  ТО конец?
  ИНАЧЕ            ошибка
КОНЕЦ
                                       
ЭТО разделитель
  шаг
  ЕСЛИ       а  ТО двойка
  ИНАЧЕ ЕСЛИ м  ТО двойка
  ИНАЧЕ            ошибка
КОНЕЦ

ЭТО конец?
  шаг                                  
  ЕСЛИ  ПУСТО ТО текст
  ИНАЧЕ          ошибка                
КОНЕЦ
                                       
ЭТО текст
 ВВЕРХ
КОНЕЦ
                                       
ЭТО ошибка
 шаг                                   
 ЕСЛИ НЕ ПУСТО ТО ошибка               
 ВЛЕВО
КОНЕЦ                                  
                                       
ЭТО шаг                                
 ВНИЗ ВПРАВО ВВЕРХ                     
КОНЕЦ




                        * * *

Команда 3101
------------
Оценка: 7
.\01\01.txt

Определение 4
-------------
 <текст>:=<слово1>.|<слово1><разделитель><текст1>.
 <слово1>:=<заглавная><строчная>|<слово1><строчная>
 <текст1:=<слово>|<текст1><разделитель><слово>
 <слово>:=<строчная><строчная>|<слово><строчная>
 <разделитель>:=,|_
 <заглавная>:=М|А                    
 <строчная>:=м|а                     

Диаграмма переходов

            ┌─все остальное──────────────────────────────┐
            │               ┌────────┐              ┌────v────┐
            │               │  Вход  ├все остальное─> Ошибка  │
            │               └───┬────┘              └^───^──^─┘
            │                   М                    │   │  │
            │                   │                    │   │  │
            │                   А                    │   │  │
            │                   │                    │   │  │
            │             ┌─────v──────┐             │   │  │
            │    ┌────────>  Заглавная ├─все остальное   │  │
            │    │        └─────┬──────┘                 │  │
            │    │              м                        │  │
            │    м              │                        │  │
            │    │              а    ┌───────┐           │  │
            │    а              │    │       │           │  │
     ┌──────┴──────┐     ┌──────v────v─┐     │           │  │
     │ Разделитель <─_─,─┤  Строчная   ├─а─м─┘           │  │
     └─────────────┘     └───┬───────┬─┘                 │  │
                             .       └───все остальное───┘  │
                             │                              │
     ┌─────┐             ┌───v───┐                          │
     │ Да! <───пусто─────┤ Точка ├───────все остальное──────┘
     └─────┘             └───────┘

Программа

// Начало
ЭТО Вход                               
 Шаг
 ЕСЛИ М
  ТО Заглавная                         
  ИНАЧЕ ЕСЛИ А
         ТО Заглавная
         ИНАЧЕ Ошибка                  
КОНЕЦ // Вход
//-------------------------------------
// Если попалась М или А               
ЭТО Заглавная                          
 Шаг
 ЕСЛИ м                                
  ТО Строчная
  ИНАЧЕ ЕСЛИ а
         ТО Строчная                   
         ИНАЧЕ Ошибка                  
КОНЕЦ // Заглавная
//-------------------------------------
// Если попалась м или а
ЭТО Строчная
 Шаг
 ЕСЛИ а                                
  ТО Строчная
 ИНАЧЕ ЕСЛИ м
        ТО Строчная                    
       ИНАЧЕ ЕСЛИ .
              ТО Точка
            ИНАЧЕ ЕСЛИ _               
                   ТО Разделитель
                  ИНАЧЕ ЕСЛИ ,         
                        ТО Разделитель 
                         ИНАЧЕ Ошибка  
КОНЕЦ // Строчная
//-------------------------------------
// Если попалась точка
ЭТО Точка
 Шаг                                   
 ЕСЛИ ПУСТО                            
  ТО Да!
 ИНАЧЕ Ошибка
КОНЕЦ // Точка
//-------------------------------------
// Если попался разделитель
ЭТО Разделитель                        
 Шаг
 ЕСЛИ м
  ТО Заглавная                         
 ИНАЧЕ ЕСЛИ а
        ТО Заглавная
        ИНАЧЕ Ошибка                   
КОНЕЦ // Разделитель
//-------------------------------------
// Процедура хода                      
ЭТО Шаг                                
 ВНИЗ
 ВПРАВО                                
 ВВЕРХ                                 
КОНЕЦ // Шаг
//-------------------------------------
// Если попалась ошибка                
ЭТО Ошибка
 Шаг
 ЕСЛИ НЕ ПУСТО
  ТО Ошибка
 ВЛЕВО
КОНЕЦ // Ошибка                        
//-------------------------------------
// Подтверждение программы
ЭТО Да!                                
 ВВЕРХ
КОНЕЦ // Да!
//-------------------------------------

комментарий  куратора
- - - - - - - - - - -

По диаграмме.

Имя "Заглавная" для этого состояния не слишком хорошо. Ведь мы
приходим в это состояние и при обнаружении малых букв "а" и "м".

В моей диаграмме это состояние названо "двойка". Название намекает,
что это место диаграммы отвечает за минимум две буквы в слове.

Название "строчная" -- лучше, ибо через него прокручиваются малые
буквы слова. Но тоже плохо. Название "строчная" говорит о символе, а
не о объекте. А в состояниях (кроме промежуточных, типа "двойка") мы
формируем не символы, а объекты (лексемы). Лучше было бы назвать это
состояние как-нибудь так: "слово", "основа_слова", "основа"...


Команда 3102
------------
Оценка: 6
.\02\02.txt
Автор решения - Богатырев Гена

Определение 4
-------------
<текст>          := <нач_текста>.|<нач_текста><разделитель><внутри_текста>.
<внутри_текста>  := <слово>|<слово><разделитель><внутри_текста>
<начало_текста>  := <заглавная_буква><буква>|<начало_текста><буква>
<разделитель>    := _|,
<слово>          := <буква><буква>|<слово><буква>
<буква>          := а|м
<заглавная_буква>:= А|М


диаграмма переходов
- - - - - - - - - -
           остальное
  (ошибка)<────────(вход)
                     │
        <загл. буква>│
                     │
           остальное v
  (ошибка)<────────<слово?>
                     │
             <буква> │  ┌─────────┐
           остальное v  v <буква> │
  (ошибка)<────────<слово>────────┘
              .    │    │
  (ответ) <────────┘    │<разделитель>
                        │
                        v
                     <текст?><────────────┐
                        │                 │
                        │<буква>          │
            остальное   v                 │
  (ошибка)<─────────<текст?>              │
                        │                 │
                        │ <буква>         │
            остальное   v    <разделитель>│
  (ошибка)<──────────<текст?>─────────────┘
                    .│ ^    │
  (ответ) <──────────┘ │    │<буква>
                       └────┘

Программа, описание программы
------------------------------
ЭТО НАЧАЛО                             
 ВВЕРХ ВПРАВО ВНИЗ
 ЕСЛИ , ТО ФИНИШ // Текст не должен    
        ИНАЧЕ ПР_ //начинаться запятой.
КОНЕЦ                                  

ЭТО ПР_
 ЕСЛИ _ ТО ФИНИШ   //В начале не должен
        ИНАЧЕ ПР_А //стоять _
КОНЕЦ                                  

ЭТО ПР_А   //Проверка заглавной буквы в
           //начале.
 ЕСЛИ А ТО НАЧАЛО_1                    
        ИНАЧЕ ПР_М
КОНЕЦ                                  

ЭТО ПР_М        //Проверка: М в начале.
 ЕСЛИ М ТО НАЧАЛО_1
        ИНАЧЕ ФИНИШ                    
КОНЕЦ

ЭТО НАЧАЛО_1    // Проверка со второго 
                // символа
 ВВЕРХ ВПРАВО ВНИЗ                     
 ЕСЛИ а ТО НАЧАЛО_2                    
        ИНАЧЕ ПОСЛЕ_загл               
КОНЕЦ

ЭТО ПОСЛЕ_загл //Проверка случая, если 
               // на второй позиции м.
 ЕСЛИ м ТО НАЧАЛО_2                    
        ИНАЧЕ ФИНИШ
КОНЕЦ

ЭТО НАЧАЛО_2 //Проверка: заканчивается 
             //ли текст.
 ВВЕРХ ВПРАВО ВНИЗ                     
 ЕСЛИ НЕ . ТО СНОВА                    
           ИНАЧЕ ОКОНЧАНИЕ             
КОНЕЦ
                                       
ЭТО СНОВА    //Текст не закончился,
         //проверяем следующий символ.
  ЕСЛИ а ТО НАЧАЛО_2                   
         ИНАЧЕ ПР_м
КОНЕЦ                                  
                                       
ЭТО ПР_м     //Следующий символ - м.   
 ЕСЛИ м ТО НАЧАЛО_2
        ИНАЧЕ ПР_,
КОНЕЦ                                  

ЭТО ПР_,    // Следующий символ - ",". 
 ЕСЛИ , ТО ПР_след
        ИНАЧЕ ПР_1
КОНЕЦ
                                       
ЭТО ПР_1    //Следующий символ - "_".
 ЕСЛИ _ ТО ПР_след                     
        ИНАЧЕ ФИНИШ                    
КОНЕЦ                                  

ЭТО ПР_след        //Движение по тексту
                   //вправо.
 ВВЕРХ ВПРАВО ВНИЗ
 ЕСЛИ а ТО ДАЛЬШЕ                      
        ИНАЧЕ ПРОДОЛЖИ
КОНЕЦ                                  
                                       
ЭТО ПРОДОЛЖИ       //Симовл м после    
                   //    разделителя.
 ЕСЛИ м ТО ДАЛЬШЕ
        ИНАЧЕ ФИНИШ                    
КОНЕЦ
                                       
ЭТО ДАЛЬШЕ
 ВВЕРХ ВПРАВО ВНИЗ //Движение по тексту
 ЕСЛИ а ТО ПРОВЕРКА
        ИНАЧЕ СНОВА_1                  
КОНЕЦ
                                       
ЭТО СНОВА_1                            
 ЕСЛИ м ТО ПРОВЕРКА                    
        ИНАЧЕ ФИНИШ
КОНЕЦ                                  

ЭТО ФИНИШ //Рекурсия по поиску конца
          //записи.                    
 ВВЕРХ ВПРАВО ВНИЗ
 ЕСЛИ НЕ ПУСТО ТО ФИНИШ                
               ИНАЧЕ ПОВТОРИ 2 ВНИЗ    
 ВЛЕВО    //Отложенная команда рекурсии
       //для возращения к месту ошибки.
КОНЕЦ
                                       
ЭТО ПРОВЕРКА
 ВВЕРХ ВПРАВО ВНИЗ                     
 ЕСЛИ а ТО ПРОВЕРКА
        ИНАЧЕ ПРОВЕРКА_м
КОНЕЦ
                                       
ЭТО ПРОВЕРКА_м
  ЕСЛИ м ТО ПРОВЕРКА                   
         ИНАЧЕ ПР_точка                
КОНЕЦ                                  

ЭТО ПР_точка                           
 ЕСЛИ НЕ . ТО СНОВА
           ИНАЧЕ ОКОНЧАНИЕ
КОНЕЦ                                  

ЭТО ОКОНЧАНИЕ                          
 ВВЕРХ ВПРАВО ВНИЗ                     
 ЕСЛИ НЕ ПУСТО ТО ФИНИШ                
               ИНАЧЕ ВНИЗ
КОНЕЦ

комментарий  куратора
- - - - - - - - - - -

1) Определение верное.

2) В диаграмме три разных состояния с одним именем <текст>.

3) В диаграмме проверка заканчивается, когда обнаружена точка, что
неверно.

4) Программа совсем не соответствует диаграмме, то есть, писалась
совсем отдельно.

5) Удивительным является то, что программа, несмотря на все эти
промахи и свою длину -- работает!

Команда 3104
------------
Оценка: 4
.\04\04.txt

программа
- - - - -
ЭТО Задача7
 Смещение
 ЕСЛИ А
 ТО Слово1
 ИНАЧЕ ЕСЛИ М
       ТО Слово1
       ИНАЧЕ Ошибка
КОНЕЦ
//-------------------------------------
ЭТО Смещение
  ВНИЗ
  ВПРАВО
  ВВЕРХ
КОНЕЦ
//-------------------------------------
ЭТО Ошибка
  СТОЯТЬ
КОНЕЦ
//-------------------------------------
ЭТО Слово
 Смещение
 ЕСЛИ а
 ТО Слово1
 ИНАЧЕ ЕСЛИ м
       ТО Слово1
       ИНАЧЕ Ошибка
КОНЕЦ
//-------------------------------------
ЭТО Слово1
 Смещение
 ЕСЛИ а
 ТО Слово2
 ИНАЧЕ ЕСЛИ м
       ТО Слово2
       ИНАЧЕ Ошибка
КОНЕЦ
//-------------------------------------
ЭТО Слово2
 Смещение
 ЕСЛИ а
 ТО Слово2
 ИНАЧЕ ЕСЛИ м
       ТО Слово2
       ИНАЧЕ ЕСЛИ .
             ТО
               {
                Смещение
                ВВЕРХ
               }
              ИНАЧЕ ЕСЛИ _
                    ТО Слово
                    ИНАЧЕ ЕСЛИ ,
                          ТО Слово
                          ИНАЧЕ Ошибка
КОНЕЦ

комментарий  куратора
- - - - - - - - - - -

1) Нет определения.

2) Нет диаграммы.

3) Программа считает концом записи точку, а не ПУСТО. Например, в тесте
"Ам.мм" происходит разрушение записи.

4) При обнаружении программой ошибки в записи, запись не выравнивается
в строке.

Команда 3105
------------
Оценка: 6
.\05\05.txt

Определение 4
-------------
<текст>       := <предложение>.
<предложение> := <Слово>|<предложение><разделитель><слово>
<слово>       := <буква><буква>|<слово><буква>
<Слово>       := <Буква><буква>|<Буква><слово>|<Слово><буква>
<разделитель> := _|,
<буква>       := а|м
<Буква>       := А|М

                  остальное         А/М
        (ошибка)<-----------(вход)---------->(условие_буква)
          ^   ^                                │  │
          │   │                 остальное      │  │                
          │   +--------------------------------+  │               
          │                                       │
          │                                 а/м   │                
          │        +---->(условие_слово)<---------+             
          │        │       │  │   │   │                               
          │        │       │  │   │   │
          +----+   │       │  │   │   │  остальное                          
               │   │ а/м   │  │   │   +----------------->(ошибка)
               │   +-------+  │  ,/_                       ^   ^
         остальное            .   │                        │   │
               │              │   │                        │   │
           (условие_точка)<---+   │                        │   │    
               │                  │                        │   │
             пусто                V              остальное │   │                
               │               (условие_раздел)------------+   │
               V                  │                            │
             (вверх)             а/м                           │
                                  │               остальное    │ 
                              (условие_слово2)-----------------+                                    
                                  │
                                 а/м
                                  │
                                  V
                           (условие_слово)
программа
- - - - -
ЭТО ВХОД                               
ШАГ
ЕСЛИ А ТО          УСЛОВИЕ_БУКВА       
   ИНАЧЕ ЕСЛИ М ТО УСЛОВИЕ_БУКВА
   ИНАЧЕ           ОШИБКА
КОНЕЦ

ЭТО УСЛОВИЕ_БУКВА                      
ШАГ
ЕСЛИ а ТО          УСЛОВИЕ_СЛОВО       
   ИНАЧЕ ЕСЛИ м ТО УСЛОВИЕ_СЛОВО
   ИНАЧЕ           ОШИБКА
КОНЕЦ
                                       
ЭТО УСЛОВИЕ_СЛОВО                      
ШАГ
ЕСЛИ а          ТО УСЛОВИЕ_СЛОВО
   ИНАЧЕ ЕСЛИ м ТО УСЛОВИЕ_СЛОВО       
   ИНАЧЕ ЕСЛИ . ТО УСЛОВИЕ_ТОЧКА       
   ИНАЧЕ ЕСЛИ , ТО УСЛОВИЕ_РАЗДЕЛ
   ИНАЧЕ ЕСЛИ _ ТО УСЛОВИЕ_РАЗДЕЛ      
   ИНАЧЕ           ОШИБКА              
КОНЕЦ

ЭТО УСЛОВИЕ_ТОЧКА                      
ШАГ
ЕСЛИ ПУСТО ТО ВВЕРХ
   ИНАЧЕ      ОШИБКА
КОНЕЦ
                                       
ЭТО УСЛОВИЕ_РАЗДЕЛ
ШАГ                                    
ЕСЛИ а ТО          УСЛОВИЕ_СЛОВО2
   ИНАЧЕ ЕСЛИ м ТО УСЛОВИЕ_СЛОВО2
   ИНАЧЕ           ОШИБКА
КОНЕЦ                                  
                                       
ЭТО УСЛОВИЕ_СЛОВО2
ШАГ
ЕСЛИ а ТО          УСЛОВИЕ_СЛОВО       
   ИНАЧЕ ЕСЛИ м ТО УСЛОВИЕ_СЛОВО       
   ИНАЧЕ           ОШИБКА
КОНЕЦ                                  
                                       
ЭТО ОШИБКА
ШАГ
ЕСЛИ НЕ ПУСТО ТО ОШИБКА                
ВЛЕВО
КОНЕЦ

ЭТО ШАГ
ВНИЗ                                   
ВПРАВО
ВВЕРХ                                  
КОНЕЦ

комментарий  куратора
- - - - - - - - - - -

1) Эта часть определения:

<Слово>       := <Буква><буква>|<Буква><слово>|<Слово><буква>

неверная!

Получается, что  "ААа" -- есть "Слово"

В самом деле "Аа" -- слово по первой части.
Но по второй части <Буква><слово> =  <Буква>Аа = ААа

2) Диаграмма имеет лишние состояния.

3) Программа работает правильно.

Команда 3106
------------
Оценка: 5
.\06\06.txt
Автор: Балдин Миша

<текст>           ::= <заглавная буква><основной текст>
<заглавная буква> ::= А|М
<основной текст>  ::= <слово>.|<слово><разделитель><основной текст>
<разделитель>     ::= _|,
<слово>           ::= <буква><буква>|<слово><буква>
<буква>           ::= а|м



диаграмма переходов
- - - - - - - - - -
      В начальный момент алгоритм находится в состоянии (Вход1)

       ┌────────────────┐
       │  ┌───────────┐ │
       │  │           V V
       б  └──буква───(Буква ?)<───буква────(Вход2)<──А|М──(Вход1)
       у              │ │  │                 │              │
       к              р т  и                 и              и
       в              а о  н                 н              н
       а              з ч  а                 а              а
       │              д к  ч                 ч              ч
       │              е а  е                 е              е
     (Дальше_С_,)     л │  │                 │              │
       │  ^           и │  │                 │              │
       и  │           т │  │                 │              │
       н  │           е │  │                 V              │
       а  │           л │  └────────────>(Ошибка)<──────────┘
       ч  │           ь │                    ^
       е  │           │ │                    │
       │  └───────────┘ │                    │
       V                │                    │
    (Ошибка)            │                    │
                        V                    │
    (ТЕКСТ)<──пусто─(Проверь_точку)───иначе──┘

----------------------------------------------------------------------
//Задача7. Балдин Миша
//Программа построена на основе
//диаграммы переходов
//(весь алгоритм виден по ней).
//В начальный момент алгоритм
//находится в состоянии (Вход1).
//В задачу 6 добавлена новая процедура
//которая проверяет на Большую букву
//------------------------------------
ЭТО Вход1
 Шаг
 ЕСЛИ А
  ТО    Вход2
  ИНАЧЕ ЕСЛИ М ТО Вход2
  ИНАЧЕ Ошибка
КОНЕЦ

ЭТО Вход2
 Шаг
 ЕСЛИ а ТО Буква?
 ИНАЧЕ ЕСЛИ м ТО Буква?
 ИНАЧЕ Ошибка
КОНЕЦ

ЭТО Шаг
 ВНИЗ
 ВПРАВО
 ВВЕРХ
КОНЕЦ

ЭТО Буква?
 Шаг
        ЕСЛИ а ТО Буква?
 ИНАЧЕ  ЕСЛИ м ТО Буква?
 ИНАЧЕ  ЕСЛИ _ ТО Дальше_С_,
 ИНАЧЕ  ЕСЛИ , ТО Дальше_С_,
 ИНАЧЕ  ЕСЛИ . ТО Проверь_Точку
 ИНАЧЕ  Ошибка
КОНЕЦ

ЭТО Проверь_Точку
 Шаг
 ЕСЛИ ПУСТО
  ТО    ТЕКСТ
  ИНАЧЕ Ошибка
КОНЕЦ

ЭТО Дальше_С_,
 Шаг
        ЕСЛИ а ТО Буква?
 ИНАЧЕ  ЕСЛИ м ТО Буква?
 ИНАЧЕ  Ошибка
КОНЕЦ

ЭТО Ошибка
 Шаг
 ЕСЛИ НЕ ПУСТО ТО Ошибка
 ВЛЕВО
КОНЕЦ

ЭТО ТЕКСТ
 ВВЕРХ
КОНЕЦ

комментарий  куратора
- - - - - - - - - - -

1) Из вашего определения следует, например, что запись "Аа." не
является текстом. То есть, ваше определение требует, чтобы первое
слово обязательно состояло из трех букв, первая из которых --
заглавная.

2) Диаграмма и программа считает правильным текст, содержащим
однобуквенные слова, например, "Аа_м."


Команда 3107
------------
Оценка: 0
.\07\07.txt

Команда 3108
------------
Оценка: 3
.\08\08.txt
Автор решения: Катя Мороз

описание  алгоритма
- - - - - - - - - -
Исполнитель поднимает кубики на строку выше, проверяя в записи
наличие заглавных букв, по завершении проверки возвращается на 
место ошибки если она есть в тексте.

программа
- - - - -
ЭТО Заглавное                          
{ ВНИЗ ВПРАВО ВВЕРХ }                  
ЕСЛИ М ТО Проверка ИНАЧЕ               
ЕСЛИ А ТО Проверка ИНАЧЕ Ошибка        
                                       
КОНЕЦ // Имя
                                       
ЭТО Проверка                           
{ ВНИЗ ВПРАВО ВВЕРХ }                  

ЕСЛИ м ТО Проверка ИНАЧЕ
ЕСЛИ а ТО Проверка ИНАЧЕ               
ЕСЛИ , ТО Проверка2  ИНАЧЕ
ЕСЛИ _ ТО Проверка2  ИНАЧЕ
ЕСЛИ ПУСТО ТО ВВЕРХ ИНАЧЕ              
ЕСЛИ . ТО { ВПРАВО ВВЕРХ }             
ИНАЧЕ Ошибка
КОНЕЦ                                  

ЭТО Ошибка                             
{ ВНИЗ ВПРАВО ВВЕРХ }                  
ЕСЛИ  НЕ ПУСТО ТО Ошибка
ИНАЧЕ СТОЯТЬ                           
 ВЛЕВО                                 
КОНЕЦ                                  
                                       
ЭТО Проверка2                                 
{ ВНИЗ ВПРАВО ВВЕРХ }
ЕСЛИ _ ТО  Ошибка ИНАЧЕ
ЕСЛИ , ТО  Ошибка ИНАЧЕ Проверка       
КОНЕЦ                                  

комментарий  куратора
- - - - - - - - - - -

1) Нет определения.
2) Нет диаграммы.
3) Программа считает верными записи без точки на конце.
4) Программа считает верными и записи вида "Аа_.".

Причина неверной программы в том, что не построена диаграмма
переходов.

Команда 3109
------------
Оценка: 0
.\09\09.txt

Команда 3110
------------
Оценка: 3.5
.\10\10.txt
.\10\1071.coc
Автор решения: Сечкина Галя, 7 класс

<текст> ::=<БУКВА> <слово>.| <БУКВА><слово><разделитель><текст>
<разделитель> ::= _ | ,
<слово> ::= <буква> |<слово><буква>
<буква> ::= а | м
<БУКВА> ::= А | М

диаграмма переходов
- - - - - - - - - -

      (ответ)        (ошибка)
          ^             ^ ^
          │  остальное  │ │
    точка │ ┌───────────┘ │ остальное
    (.)   │ │      А М    |
          │ │     БУКВА   │
        (слово?) <───────(вход)
  ┌──────┐ │буква
  │      V V
  │    (слово)
  │      │ │
  │      │ │    разделитель
  │буква │ │   _  ,
  └──────┘ │
           │
           V       остальное
       (слово?)────────────>(ошибка)
           │
 буква     │
┌───────┐  │буква
│       │  │
│       V  V      остальное
└──── (слово)  ───────────>(ошибка)
           │
           │ точка
           │  (.)
           V
       (ответ)

   Схема показывает состояния алгоритма (они обозначены  словами
в круглых скобках) и переходы  алгоритма  из  одного состояния в
другое (они изображены стрелками) в зависимости от значения оче-
редного символа  входной  записи  (символы  обозначены на стрел-
ках-переходах).
   Рассмотрим схему в динамике работы алгоритма.
   В начальный момент алгоритм находится в состоянии (вход).
   Любой очередной символ в этом состоянии,  кроме символа "БУКВА",
 приводит к переходу в состояние (ошибка).
   Если все же,  в  состоянии (вход) очередным символом является
"БУКВА"(буква может быть только большие А или М),
алгоритм переходит в состояние (слово?).
   Какой символ допустим в этом состоянии? Из определения следу-
ет, что таких допустимых символов три:
   "буква" - алгоритм остается в состоянии (слово);
   Любой другой символ приводит к переходу в состояние (ошибка).
   Состояние (слово?) вводится дополнительно к состоянию (слово)
для того, чтобы расценить запись, завершающуюся "_" или "," как
ошибочную.
   Состояние (слово) обрабатывает очередной символ следующим об-
разом:
   "буква" - алгоритм остается в состоянии (слово);
   "точка" - алгоритм переходит в состояние (ответ);
   любой другой символ - алгоритм переходит в состояние (ошибка).


программа
- - - - -
ЭТО ТЕКСТ
ШАГ
ЕСЛИ А ТО СЛОВО
ИНАЧЕ ЕСЛИ М ТО СЛОВО                  
ИНАЧЕ ОШИБКА
КОНЕЦ                                  
ЭТО СЛОВО
ШАГ
ЕСЛИ а ТО СЛОВО                        
ИНАЧЕ ЕСЛИ м ТО СЛОВО                  
ИНАЧЕ ЕСЛИ . ТО ОТВЕТ1
ИНАЧЕ ЕСЛИ _ ТО СЛОВО                  
ИНАЧЕ ЕСЛИ , ТО СЛОВО                  
ИНАЧЕ ЕСЛИ ПУСТО ТО ОТВЕТ
ИНАЧЕ ОШИБКА                           
КОНЕЦ
ЭТО ОТВЕТ1
ШАГ
ЕСЛИ НЕ ПУСТО ТО ОШИБКА                
КОНЕЦ
ЭТО ОТВЕТ
ВВЕРХ                                  
КОНЕЦ                                  

ЭТО ОШИБКА
 ШАГ                                   
 ЕСЛИ НЕ ПУСТО ТО ОШИБКА
ВЛЕВО                                  
КОНЕЦ
ЭТО ШАГ
ВНИЗ                                   
ВПРАВО                                 
ВВЕРХ
КОНЕЦ                                  

комментарий  куратора
- - - - - - - - - - -

1) Из определения:

<текст> ::=<БУКВА> <слово>.| <БУКВА><слово><разделитель><текст>
<разделитель> ::= _ | ,
<слово> ::= <буква> |<слово><буква>
<буква> ::= а | м
<БУКВА> ::= А | М

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

2) Диаграмма содержит два разных состояния с одним и тем же именем
"слово?".

3) Анализ текста диаграмма заканчивает при обнаружении  символа ".",
а не ПУСТО.

по программе 1071.coc
- - - - - - - - - - -
4) В программе нет структурных отступов и пустых строк между
процедурами.

5) Запись с точкой на конце, программа считает ошибочной и, наоборот,
запись без точки -- правильной ("Ам", "Ам_а.").

6) Программа считает верной запись, в которой есть слова из одной
буквы.

по программе 1072.coc
- - - - - - - - - - -

7) Программа считает верной запись, в которой есть слова из одной
буквы ("Ам_а.").

8) Правильная запись "Аа." считается программой ошибочной.

по программе 1073.coc
- - - - - - - - - - -

Это копия программы 1072.coc

Команда 3111
------------
Оценка: 3.5
.\11\11.txt
Автор: Килеев Слава.

<текст>        := <первое слово>.|<первое слово><разделитель><слово>.
<первое слово> := А<слово>|М<слово> |А<буква>|М<буква>
<слово>        := <буква><буква>| |<слово><буква>
<буква>        := а|м
<разделитель>  := _|,

диаграмма переходов
- - - - - - - - - -
     _______
    | Текст |_______________________
    |_______| остальное             |
       |А М                         |
       |                            |
     __v______  остальное          _v____
 |->|Проверка |------------------>|Ошибка|
 |  |_________|_а_м_____          |______|
 |      .|              |           ^
 |       |              |           |
 |    ___v___           |           |
 |   | Ответ |----------|---------->|
 |   |_______|<----|    | остальное |
 |   пусто |     . |____v_____      |
 |      ___v__    |Перепроверка|    |
 |     |вверх |   |____________|    |
 |     |______|   а м|   |_ ,       |
 |<------------------|   |          |
 |      а м  ________v___v______    |
 |<---------| Проверка символа |    |
 |          |__________________|    |
 |                   |   |остальное |
 |               а м |   |--------->|
 |                   |              |
 |        а м      __v______  ост.  |
 |<---------------|Проверка1|------>|
                  |_________|
                     | .
                  ___V______
                  | Ответ  |
                  |________|

описание  алгоритма
- - - - - - - - - -
1. Проверяет первый символ заглавный или нет.

2. Проверяет следующий символ (ищем разделитель).

3. Если разделитель то проверяем следующий символ.

4. Если точка то выводим ответ.

//-------------------------------------
// Проверяет первый символ.            
ЭТО Текст
 Шаг  // Подходит к следующему символу.
 ЕСЛИ А ТО Проверка // Проверяет       
//                    следующие символ.
 ИНАЧЕ ЕСЛИ М ТО Проверка // Проверяет 
//                    следующие символ.
 ИНАЧЕ Ошибка //Поднимает все следующие
//  символы вверх и встает под ошибкой.
КОНЕЦ // Текст                         
//-------------------------------------
// Проверяет второй символ.            
ЭТО Проверка                           
 Шаг // Подходит ко второму символу.
 ЕСЛИ а ТО Перепроверка                
 ИНАЧЕ ЕСЛИ м ТО Перепроверка          
 ИНАЧЕ ЕСЛИ . ТО Ответ                 
 ИНАЧЕ Ошибка // Поднимает все следующи
//  символы вверх и встает под ошибкой.
КОНЕЦ // Проверка                      
//-------------------------------------
// Проверяет следующие символы.        
                                       
ЭТО Перепроверка                       
 Шаг                                   
 ЕСЛИ а ТО      Проверка               
 ИНАЧЕ ЕСЛИ м ТО Проверка
 ИНАЧЕ ЕСЛИ . ТО Ответ                 
 ИНАЧЕ ЕСЛИ _ ТО Проверка_символа      
                                       
//          Проверяет следующие символ.
 ИНАЧЕ ЕСЛИ , ТО Проверка_символа      
                                       
//          Проверяет следующие символ.
 ИНАЧЕ Ошибка // Поднимает все следующи
//  символы вверх и встает под ошибкой.
КОНЕЦ // Перепроверка                  
//-------------------------------------
// Проверяет есть символы после точки  
// или нет.                            
ЭТО Ответ
 Шаг                                   
 ЕСЛИ ПУСТО ТО ВВЕРХ
 ИНАЧЕ Ошибка // Поднимает все следующи
//  символы вверх и встает под ошибкой.
КОНЕЦ // Ответ                         
//-------------------------------------
// описание                            
ЭТО Проверка_символа
 Шаг                                   
 ЕСЛИ а ТО  Проверка1                  
 ИНАЧЕ ЕСЛИ м ТО  Проверка1            
 ИНАЧЕ  Ошибка
КОНЕЦ // Проверка_символа              
//-------------------------------------
//Поднимает все следующие символы вверх
// и встает под ошибкой.               
ЭТО Ошибка
 Шаг                                   
 ЕСЛИ НЕ ПУСТО                         
  ТО    Ошибка                         
 ВЛЕВО                                 
КОНЕЦ // Ошибка
//-------------------------------------
// Подходит к следующему символу.
ЭТО Шаг                                
 ВНИЗ                                  
 ВПРАВО                                
 ВВЕРХ                                 
КОНЕЦ // Шаг                           
//-------------------------------------
ЭТО Проверка1                          
 Шаг                                   
 ЕСЛИ а ТО Проверка                    
 ИНАЧЕ ЕСЛИ м ТО Проверка
 ИНАЧЕ ЕСЛИ . ТО Ответ                 
 ИНАЧЕ Ошибка                          
КОНЕЦ //Проверка1                      

комментарий  куратора
- - - - - - - - - - -

Замечания по определению:

<текст>        := <первое слово>.|<первое слово><разделитель><слово>.
<первое слово> := А<слово>|М<слово>|А<буква>|М<буква>
<слово>        := <буква><буква>|<слово><буква>
<буква>        := а|м
<разделитель>  := _|,

1)
Строка:
<первое слово> := А<слово>|М<слово>|А<буква>|М<буква>

эквивалентно такой:
<первое слово> := А<слово>|М<слово>

2) Из:
<текст>        := <первое слово>.|<первое слово><разделитель><слово>.

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

Замечание по диаграмме и программе.

1) Записи вида "А." программа считает правильными.
2) Записи вида "Аа,а." программа считает правильными.


Команда 3112
------------
Оценка: 3
.\12\12.txt
Авторы:  Наськина Наташа, Барщевская Надя

Решение отличается от предудущей задачи только проверкой является ли
первая буква заглавной.

     (ответ_текст)    (ошибка)
          ^             ^  ^
          │  остальное  │  │
    точка │ ┌───────────┘  │ остальное
          │ │              │
          │ │    Заглавная │
  ┌──── (слово) <─────────(вход)
  │      ^^│ │    буква    │
  │      │││ │             │
  │буква │││ │ разделитель │
  └──────┘││ │    ┌────────┘
          ││ │    │
 ┌────────┘V V    V
 │     (разделитель?)────────────>(ошибка)
 │ буква   │           остальное
 └─────────┘

программа
- - - - -
ЭТО вход
  шаг
  ЕСЛИ А ТО слово
  ИНАЧЕ ЕСЛИ М ТО слово
  ИНАЧЕ ошибка
КОНЕЦ // Имя
//-------------------------------------
// описание
ЭТО слово
  шаг
  ЕСЛИ . ТО ответ_текст
  ИНАЧЕ ЕСЛИ а ТО слово
  ИНАЧЕ ЕСЛИ м ТО слово
  ИНАЧЕ ЕСЛИ _ ТО разделитель?
  ИНАЧЕ ЕСЛИ , ТО разделитель?
  ИНАЧЕ ошибка
КОНЕЦ // Имя
//-------------------------------------
// описание
ЭТО разделитель?
  шаг
  ЕСЛИ а ТО слово
  ИНАЧЕ ЕСЛИ м ТО слово
  ИНАЧЕ ЕСЛИ ПУСТО ТО ошибка
  ИНАЧЕ ошибка
КОНЕЦ // Имя
//-------------------------------------
// описание
ЭТО ошибка
  шаг
  ЕСЛИ НЕ ПУСТО ТО ошибка
  ВЛЕВО
КОНЕЦ // Имя
//-------------------------------------
// описание
ЭТО ответ_текст
  ВПРАВО ВВЕРХ
КОНЕЦ // Имя
//-------------------------------------
// описание
ЭТО шаг
  ВНИЗ ВПРАВО ВВЕРХ
КОНЕЦ // Имя

комментарий  куратора
- - - - - - - - - - -

1) Нет определения.
2) У вас написано:
-----
Решение отличается от предудущей задачи только проверкой является ли
первая буква заглавной.
-----
И действительно, ваше решение так и построено.
А нужно было еще учесть:

   3) слово не должно состоять из одной буквы.

Тесты, опровергающие вашу программу: "М." "М,а.". Эти записи ваша
программа признает правильными.
