Для записи номеров столбцов используются 26 латинских букв, причем после исчерпания букв A..Z следует АА..ZZ, затем - ААА. Это всего лишь кодирование чисел в системе счисления по основанию 26, сдвинутой на единицу (потому что нулей нет) с алфавитом А..Z. Тогда запись вида a₁a₂a₃ = a₁·26² + a₂·26 + a₃. Полагаем, что А=1, B=2, ... Z=26
Тогда XVD₂₆ = 24·26² + 22·26 + 5 = 16224 + 572 + 4 = 16800, но никак не 16384. 16384 кодируется как XFD - в условии опечатка.
// PascalABC.NET 3.2, сборка 1334 от 12.11.2016 begin var s:=UpperCase(ReadlnString('Введите имя столбца')); var n:=s.Length; var cn:=0; for var i:=1 to n do cn+=(ord(s[n-i+1])-64)*trunc(power(26,i-1)); Writeln('Номер колонки равен ',cn) end.
Примеры Введите имя столбца XFD Номер колонки равен 16384
Введите имя столбца AA Номер колонки равен 27
Функция на VBA Function cln(s As String) As Integer Dim colNumber As Integer, i As Integer s = UCase(s): cn = 0 n = Len(s) For i = 1 To n cn = cn + (Asc(Mid(s, n - i + 1, 1)) - 64) * 26 ^ (i - 1) Next cln = cn End Function
Var k, s, i: integer;beginreadln(k);s:=k mod 10;i:=0;while k<>0 do begin k:=k div 10; if s<k mod 10 then begins:=k mod 10;i:=0;end;if s=k mod 10 theni:=i+1;end;writeln(i);end. В переменной k вводим число, в переменной s храним максимальную цифру, в переменной i подсчитываем вхождение максимальной цифры в число
var k, s, i: integer;beginreadln(k);//вводим числоs:=k mod 10;//предполагаем что последняя цифра - максимальнаяi:=0;// инициализируем счетчик нулемwhile k<>0 do begin//цикл идет до тех пор пока не закончатся цифры в k k:=k div 10;// отбрасываем цифру от числа if s<k mod 10 then //если s < последней цифры kbegins:=k mod 10;//то меняем нашу максимальную цифру на новуюi:=0;// и сбрасываем счетчикend;if s=k mod 10 then// если цифра в числе равна максимальной цифреi:=i+1;//прибавляем 1 к счетчикend;writeln(i);//выводим количество вхождений максимальной цифры end.
Тогда запись вида a₁a₂a₃ = a₁·26² + a₂·26 + a₃.
Полагаем, что А=1, B=2, ... Z=26
Тогда XVD₂₆ = 24·26² + 22·26 + 5 = 16224 + 572 + 4 = 16800, но никак не 16384. 16384 кодируется как XFD - в условии опечатка.
// PascalABC.NET 3.2, сборка 1334 от 12.11.2016
begin
var s:=UpperCase(ReadlnString('Введите имя столбца'));
var n:=s.Length;
var cn:=0;
for var i:=1 to n do
cn+=(ord(s[n-i+1])-64)*trunc(power(26,i-1));
Writeln('Номер колонки равен ',cn)
end.
Примеры
Введите имя столбца XFD
Номер колонки равен 16384
Введите имя столбца AA
Номер колонки равен 27
Функция на VBA
Function cln(s As String) As Integer
Dim colNumber As Integer, i As Integer
s = UCase(s): cn = 0
n = Len(s)
For i = 1 To n
cn = cn + (Asc(Mid(s, n - i + 1, 1)) - 64) * 26 ^ (i - 1)
Next
cln = cn
End Function
k:=k div 10;
if s<k mod 10 then begins:=k mod 10;i:=0;end;if s=k mod 10 theni:=i+1;end;writeln(i);end.
В переменной k вводим число, в переменной s храним максимальную цифру, в переменной i подсчитываем вхождение максимальной цифры в число
var k, s, i: integer;beginreadln(k);//вводим числоs:=k mod 10;//предполагаем что последняя цифра - максимальнаяi:=0;// инициализируем счетчик нулемwhile k<>0 do begin//цикл идет до тех пор пока не закончатся цифры в k
k:=k div 10;// отбрасываем цифру от числа
if s<k mod 10 then //если s < последней цифры kbegins:=k mod 10;//то меняем нашу максимальную цифру на новуюi:=0;// и сбрасываем счетчикend;if s=k mod 10 then// если цифра в числе равна максимальной цифреi:=i+1;//прибавляем 1 к счетчикend;writeln(i);//выводим количество вхождений максимальной цифры end.