Как сделать чтоб программа не воспринимала Заглавные буквы - Turbo Pascal
Формулировка задачи:
Помогите пожалуйста , есть прога для проверки слов перевертышей.
Когда вводишь все маленькие либо большие буквы, то все нормально. А когда первая заглавная, а последняя маленькая, то пишет что слово не перевертыш. Как исправить?
Код программы:
Листинг программы
- program p3;
- var
- s: string; {объявление переменных}
- i,l: byte;
- begin
- readln(s); {считывание строки}
- l := length(s); {вычисление длины строки}
- if l < 2 then exit;
- i := 1; {удаление пробелов}
- while i <= l do begin
- if s[i] = ' ' then begin
- delete(s,i,1);
- l := l - 1;
- end
- else
- i := i + 1;
- end;
- {вывод строки после удаления пробелов}
- writeln(s);
- if l < 2 then exit;
- {нахождение слова-перевертыша}
- for i:=1 to l div 2 do
- if s[i] <> s[l-i+1] then begin
- writeln('Ne perevertysh');
- exit;
- end;
- writeln('Perevertysh');
- end.
Решение задачи: «Как сделать чтоб программа не воспринимала Заглавные буквы»
textual
Листинг программы
- const NY: array [Boolean] of String[3] = ('','НЕ ');
- function UpCase(c: Char): Char;
- begin
- case c of
- 'a'..'z', 'а'..'п': Dec(c,32);
- 'р'..'я': Dec(c,80);
- 'ё': Dec(c);
- end;
- UpCase:=c;
- end;
- var
- s: String;
- i, j: Integer;
- begin
- Write('Введите строку: '); ReadLn(s);
- for i:=Length(s) downto 1 do begin
- s[i]:=UpCase(s[i]);
- if not (s[i] in ['0'..'9','A'..'Z','А'..'Я','Ё']) then Delete(s,i,1);
- end;
- i:=1; j:=Length(s);
- while (i<j) and (s[i]=s[j]) do begin
- Inc(i); Dec(j);
- end;
- WriteLn('Фраза -- ',NY[i<j],'палиндром');
- end.
Объяснение кода листинга программы
- Создаётся константа NY, которая представляет собой массив строк, где каждая строка состоит из двух символов. В данном случае, массив содержит две строки: '','НЕ '.
- Создаётся функция UpCase, которая принимает символ в нижнем регистре и возвращает его в верхнем регистре. Внутри функции используется оператор case для определения, какой набор символов соответствует вводимому символу.
- Создаётся переменная s типа String, которая будет хранить введенную пользователем строку.
- Создаются две переменные i и j типа Integer, которые будут использоваться для прохода по строке s.
- Выводится сообщение
Введите строку:
и считывается строка с помощью функции ReadLn. - Используя цикл for, происходит проход по каждому символу строки s. Внутри цикла вызывается функция UpCase для каждого символа и происходит замена текущего символа на его верхний регистр. Также проверяется, является ли текущий символ палиндромом (равноценной последовательностью символов как слева направо, так и справа налево). Если символ не является палиндромом, то он удаляется из строки s с помощью функции Delete.
- Инициализируются переменные i и j, чтобы начать сравнение символов.
- Запускается цикл while, который продолжается до тех пор, пока i меньше j и символы s[i] и s[j] равны друг другу. Внутри цикла происходит увеличение переменной i и уменьшение переменной j.
- По окончании цикла выводится сообщение
Фраза --
, а затем выводится массив NY с соответствующим символом. - Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д