[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

Пример 7.2. Определить, является ли заданное слово "перевёртышем" (слово называется "перевёртышем", если совпадает с собой после переворачивания).

Система тестов

N теста
Данные
Результат
1
Slovo = ''казак''
Otvet = ''Перевертыш''
2
Slovo = ''коза''
Otvet = ''Не перевертыш''

Демонстрация

Школьный АЯ

алг Перевертыш (арг лит Slovo, рез лит Otvet)
  надо | Otvet = "Перевертыш", если Slovo совпадает с собой
       | после переворачивания
нач цел Dlina, i, лог Flag
  Dlina:=длин(Slovo)
  i:=1; Flag:=да
  нц пока (i<=Dlina/2) и Flag          | цикл пока с прерыванием до
    Flag:=(Slovo[i]=Slovo[Dlina-i+1])  | первой несовпавшей пары букв,
    i:=i+1                             | если такая имеется в слове
  кц
  если Flag
    то Otvet:="Перевертыш"
    иначе Otvet:="Не перевертыш"
  все
кон
Исполнение алгоритма
  Обозначения проверяемых условий:
  (i<=Dlina/2) и Flag   => (1)
  Slovo[i]=Slovo[Dlina-i+1]  => (2)
 
Номер теста
i
(1)
(2)
Flag
Otvet
1
1 
2 
3
+ 
+ 
-(кц)
+ 
+
да 
да 
да
"Перевертыш"
2
 
2
 
-(кц)
-
да 
нет
"Не перевертыш"
 
Turbo Pascal
Program TurnOver;
  Uses Crt;
  Var Slovo    : String;
      Dlina, i : Integer;
      Flag     : Boolean;
BEGIN
  ClrScr;
  Write('Введите слово : ');  ReadLn(Slovo);
  Dlina:= Length(Slovo);
     {Сравниваются пары букв: первая буква с последней, }
     {вторая буква с предпоследней и т.д. } 
  i:=1;  Flag := TRUE;  
  While (i <= Dlina/2) and Flag do        {цикл до первой несовпавшей }
    begin                                 {пары букв (если такая есть)}
      Flag := (Slovo[i]=Slovo[Dlina-i+1]);
      i := i+1
    end;
  WriteLn; Write( 'О т в е т : слово ', Slovo);
  If Flag then WriteLn(' — перевертыш. ')
          else WriteLn(' — не перевертыш');
  ReadLn
END.
 
QBasic
CLS : INPUT "Введите слово : ", SLOVO$ 
Dlina = LEN(SLOVO$) 
  ' Сравниваются пары букв: первая буква с последней, 
  ' вторая буква с предпоследней и т.д. 
i = 1 : Flag = 0 
WHILE (i<=Dlina/2) AND (Flag=0) 'цикл до первой несовпавшей пары букв 
  Letter1$ = MID$(SLOVO$, i, 1)          'первая буква пары 
  Letter2$ = MID$(SLOVO$, Dlina-i+1, 1)  'вторая буква пары 
  IF Letter1$ = Letter2$ THEN i=i+1 ELSE Flag=1 
WEND 
PRINT : PRINT "О т в е т : слово "; SLOVO$; 
IF Flag = 0 THEN PRINT " — перевертыш." ELSE PRINT " — не перевертыш." 
END
 

[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]