Показаны сообщения с ярлыком string. Показать все сообщения
Показаны сообщения с ярлыком string. Показать все сообщения

16.01.2024

Последовательность максимальной длины, которая содержит буквы строго в алфавитном порядке, т.е. ABCD. ЕГЭ по информатике. Задание № 24. Решение на языке Python

Текстовый файл состоит не более чем из 106   заглавных букв латинского алфавита. Найдите последовательность максимальной длины, которая содержит буквы строго в алфавитном порядке, т.е. ABCD...  .

Для выполнения этого задания следует написать программу. Воспользуйтесь файлом abcd.txt. В ответе запишите длину искомой последовательности.

Как будем решать задачу

Воспользуемся алгоритмом, рассмотренном в публикации Найти наибольшую длину возрастающей последовательности.

Запустим цикл по длине строки  и будем сравнивать два соседних символа, если это действительно две соседние буквы алфавита, то будем увеличивать счётчик длины, в противном случае счетчик длины примем за 1. Затем найдем максимум среди значений счетчика длины. 

Как проверить, что два символа это соседние символы алфавита? 

В кодовой таблице символы латинского алфавита расположены по порядку. Соответственно их коды увеличиваются на 1. Значит два соседних символа алфавита имеют разницу кодов, равную 1.

Для вычисления кода символа будем использовать функцию ord().

Программа решения задачи на языке Python

f = open('abcd.txt')

s = f.readline()

k = 1

m = 1

for x in range(len(s)-1):

    if ord(s[x+1])-ord(s[x]) == 1:

        k+=1

    else:

        k = 1

    m = max(m,k)

print(m)

Ответ: 5

07.02.2022

Язык Паскаль. Найти в предложении самое длинное слово

Задача. Дано предложение s. Найти и вывести самое длинное слово.

Будем пользоваться алгоритмом выделения слов из предложения, мы рассматривали его ранее в этом блоге. Длины слов сравним, осуществляя алгоритм поиска максимума, само слово сохраним в переменной ymax.

Программа решения задачи на языке Паскаль

var s,y,ymax:string; k,m:integer;

begin

  writeln('Введите предложение');

  readln(s);

  s:=s+' ';

  y:='';

  for k:=1 to length(s) do

   if s[k]=' ' then begin

                     if length(y)>m then begin m:=length(y); ymax:=y; end;

                     y:='';

                    end

               else y:=y+s[k];

  writeln('Самое длинное слово: ',ymax);

end.

Результат запуска программы

результат запуска

06.02.2022

Язык Паскаль. Вывести слова предложения в столбец

Задача. Дано предложение s. Вывести все его слова в столбец.

Будем считать, что слова разделяются одним пробелом. Будем идти вдоль строки, если символ равен пробелу, то выводим накопленное слово y и обнуляем его, иначе копим слово y.

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

Программа решения задачи на языке Паскаль

var s,y:string; k:integer;

begin

  writeln('Введите предложение');

  readln(s);

  s:=s+' ';

  y:='';

  for k:=1 to length(s) do

   if s[k]=' ' then begin

                     writeln(y);

                     y:='';

                    end

               else y:=y+s[k];

end.

Результат запуска программы

результат запуска

Обратите внимание, что знак препинания "прилипает" к слову и в данном случае является его частью.

05.02.2022

Верно ли, что в строке имеется заданная подстрока?

Дана строка s. Верно ли, что в строке s имеется заданная подстрока y?

Для определения принадлежности некоторой подстроки заданной сроке будем использовать операцию вхождения in.

Программа решения на языке Паскаль:

var s,y:string;

begin

  writeln('Введите строку');

  readln(s);

  writeln('Введите подстроку');

  readln(y);

  if y in s then writeln('верно, подстрока ',y,' входит в строку ',s) else writeln('неверно, подстрока ',y,' не входит в строку ',s);

end.

03.02.2022

Как найти количество определенных символов в строке

Как найти количество определенных символов в строке?

Буква


Будем опираться на версию программы PascalABC.NET 3.8.2

Применим метод count, параметрами метода в данном случае выступают переменная типа char и условие, в нашем примере условие такое: символ c равен '%'. В примере строка s содержит три символа '%', поэтому ответ 3.

Программа решения на языке Паскаль:

var s:string;c:char;

begin

  s:='Ив%%ан%?№';

  writeln(s.Count(c->c='%')); {ответ: 3}

end.