Как сделать чтоб программа не воспринимала Заглавные буквы - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста , есть прога для проверки слов перевертышей. Когда вводишь все маленькие либо большие буквы, то все нормально. А когда первая заглавная, а последняя маленькая, то пишет что слово не перевертыш. Как исправить? Код программы:
Листинг программы
  1. program p3;
  2. var
  3. s: string; {объявление переменных}
  4. i,l: byte;
  5. begin
  6. readln(s); {считывание строки}
  7. l := length(s); {вычисление длины строки}
  8. if l < 2 then exit;
  9. i := 1; {удаление пробелов}
  10. while i <= l do begin
  11. if s[i] = ' ' then begin
  12. delete(s,i,1);
  13. l := l - 1;
  14. end
  15. else
  16. i := i + 1;
  17. end;
  18. {вывод строки после удаления пробелов}
  19. writeln(s);
  20. if l < 2 then exit;
  21. {нахождение слова-перевертыша}
  22. for i:=1 to l div 2 do
  23. if s[i] <> s[l-i+1] then begin
  24. writeln('Ne perevertysh');
  25. exit;
  26. end;
  27. writeln('Perevertysh');
  28. end.

Решение задачи: «Как сделать чтоб программа не воспринимала Заглавные буквы»

textual
Листинг программы
  1. const NY: array [Boolean] of String[3] = ('','НЕ ');
  2. function UpCase(c: Char): Char;
  3. begin
  4.   case c of
  5.     'a'..'z', 'а'..'п': Dec(c,32);
  6.     'р'..'я': Dec(c,80);
  7.     'ё': Dec(c);
  8.   end;
  9.   UpCase:=c;
  10. end;
  11. var
  12.   s: String;
  13.   i, j: Integer;
  14. begin
  15.   Write('Введите строку: '); ReadLn(s);
  16.   for i:=Length(s) downto 1 do begin
  17.     s[i]:=UpCase(s[i]);
  18.     if not (s[i] in ['0'..'9','A'..'Z','А'..'Я','Ё']) then Delete(s,i,1);
  19.   end;
  20.   i:=1; j:=Length(s);
  21.   while (i<j) and (s[i]=s[j]) do begin
  22.     Inc(i); Dec(j);
  23.   end;
  24.   WriteLn('Фраза -- ',NY[i<j],'палиндром');
  25. end.

Объяснение кода листинга программы

  1. Создаётся константа NY, которая представляет собой массив строк, где каждая строка состоит из двух символов. В данном случае, массив содержит две строки: '','НЕ '.
  2. Создаётся функция UpCase, которая принимает символ в нижнем регистре и возвращает его в верхнем регистре. Внутри функции используется оператор case для определения, какой набор символов соответствует вводимому символу.
  3. Создаётся переменная s типа String, которая будет хранить введенную пользователем строку.
  4. Создаются две переменные i и j типа Integer, которые будут использоваться для прохода по строке s.
  5. Выводится сообщение Введите строку: и считывается строка с помощью функции ReadLn.
  6. Используя цикл for, происходит проход по каждому символу строки s. Внутри цикла вызывается функция UpCase для каждого символа и происходит замена текущего символа на его верхний регистр. Также проверяется, является ли текущий символ палиндромом (равноценной последовательностью символов как слева направо, так и справа налево). Если символ не является палиндромом, то он удаляется из строки s с помощью функции Delete.
  7. Инициализируются переменные i и j, чтобы начать сравнение символов.
  8. Запускается цикл while, который продолжается до тех пор, пока i меньше j и символы s[i] и s[j] равны друг другу. Внутри цикла происходит увеличение переменной i и уменьшение переменной j.
  9. По окончании цикла выводится сообщение Фраза --, а затем выводится массив NY с соответствующим символом.
  10. Конец программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы