Есть ответ 👍

Определить, является ли введенное слово идентификатором, т.е. начинается ли оно с буквы в любом регистре или знака подчеркивания и не содержит других символов, кроме букв алфавита (в любом регистре), цифр и знака подчеркивания.

226
248
Посмотреть ответы 3

Ответы на вопрос:


//pascal abc.net 3.1 сборка 1256 var   s: string;   se1,se2: set of char;   i: integer; begin se1: =['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','_']; se2: =['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','_','0','1','2','3','4','5','6','7','8','9']; readln(s); if not(lowcase(s[1]) in se1) then   begin   writeln('не идентификатор');   exit;   end; for i: =2 to length(s) do if not(lowcase(s[i]) in se2) then   begin   writeln('не идентификатор');   exit;   end; writeln('идентификатор'); end. пример ввода: _someidentificator пример вывода: идентификатор

Подобные "по-взрослому" решают с так называемых "регулярных выражений". в данном случае регулярное выражение может быть таким: _[a-za-z_\d]+ оно понимается следующим образом. сначала следует символ подчеркивания, за которым минимум один раз должен встретиться любой из символов: латинская буква на верхнем или нижнем регистре, символ подчеркивания или цифра (признак цифры - это \d, но можно было также написать 0-9). "плюсик" как раз и означает "повторить один или более раз". по сути, в квадратных скобках мы просто описали множество, быть может, только не совсем так, как принято в паскале. далее все совсем просто. применение matchvalue к строке порождает подстроку, в которой содержится часть исходной строки, удовлетворяющая регулярному выражению. мы заносим её в строку с именем r. если полученная подстрока совпадает со всей введенной строкой, значит идентификатор корректен. в противном случае мы легко находим точку несовпадения и показываем соответствующий символ. // pascalabc.net 3.1, сборка 1256 от 21.06.2016 begin   var s: readlnstring('идентификатор: ');   var r: =s.matchvalue('_[a-za-z_\d]+');   if r=s then writeln('корректный идентификатор')   else writeln('некорректный символ: ',s[r.length+1]) end. тестовые решения: идентификатор: _a315c_34gamesar5 корректный идентификатор идентификатор: _a315c_34gшamesar5 некорректный символ: ш

Const n=12; m=10; var a: array [1..n,1..n] of integer;   i,j: integer; begin for i: =1 to n do begin   for j: =1 to m do begin     a[i,j]: =12*j-i+1;     write(a[i,j]: 4);     end;   writeln;   end; end.

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

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

Подпишись на наш телеграмм канал

GTP TOP NEWS