tvmigunova551
?>

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

Информатика

Ответы

Сайжанов
//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
Пример вывода:
Идентификатор
самир1078
Подобные задачи "по-взрослому" решают с так называемых "регулярных выражений". В данном случае регулярное выражение может быть таким: _[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
Некорректный символ: ш
voen-torg

class Program

   {

       static void Main()

       {

           int sum = 0, r, size;

           Console.WriteLine("Введите размерность матрицы (размерность больше 0)");

           while (!Int32.TryParse(Console.ReadLine(), out size) || size <= 0)

           {

               Console.WriteLine("Вы ввели не число, либо недопустимое значение");

           }

           int[,] matrix = new int[size, size];

           Console.WriteLine("Матрица");

           //Заполнение и вывод матрицы

           for (int i = 0; i < size; i++)

           {

               for (int j = 0; j < size; j++)

               {

                   matrix[i, j] = i + j;

                   Console.Write(matrix[i, j] + " ");

               }

               Console.WriteLine();

           }

           Console.WriteLine($"Введите номер столбца (от 1 до {size})");

           while (!Int32.TryParse(Console.ReadLine(), out r) && size < 1 && size > r)

           {

               Console.WriteLine("Вы ввели не число либо недопустимое значение.");

           }

           for (int i = 0; i < matrix.GetLength(0); i++)

           {

               sum = sum + matrix[i, r - 1];

           }

           Console.WriteLine($"Сумма {r} столбца равна {sum}");

           Console.WriteLine("Press any key...");

           Console.ReadKey();

       }

   }

ganzashop

var

 x, y, t, c, n, k: integer;

 a: array [1..10] of integer;

begin

 for t := 1 to 10 do

   a[t] := 0;

 read(x, y);

 t := x;

 while (t <> 0) do

 begin

   c += 1;

   t := t div 10;

 end;

 k := 1;

 for t := 1 to c do

   k *= 10;

 while (x <> 0) do

 begin

   n := y;

   t := x div k;

   while (n <> 0) do

   begin

     c := n mod 10;

     n := n div 10;

     if (c = t) and (a[c + 1] = 0) then

     begin

       write(t, ' ');

       a[c + 1] += 1;

       break;

     end;

   end;

   x := x mod k;

   k := k div 10;

 end;

end.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

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

Популярные вопросы в разделе

baranovaas
ipKAV85
mishink535
avdoyan6621
restkof
blackpoint2020273
KosarinPotemkina1888
pizniak
Galinova2911
andre6807
n-896458
chernova1exei862
AntonovaAvi1716
Boldinova-Marianna
Yurevna_Kharkchinov1302