Известно, что в электронных таблицах Excel столбцы обозначаются латинскими заглавными...

0 голосов
109 просмотров

Известно, что в электронных таблицах Excel столбцы обозначаются

латинскими заглавными буквами и их комбинациями A, B, …, Z, AA, AB, …,

AZ, BA, BB, …, BZ, …, ZZ, AAA, AAB, …, XVD. Каждому столбцу

соответствует номер 1, 2, …, 26, 27, 28, …, 52, 53, 54, …, 78, …, 702, 703, 704,

…, 16384 соответственно. Необходимо составить программу, которая по

имени столбца определят его номер.


Информатика (167 баллов) | 109 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Для записи номеров столбцов используются 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

(150k баллов)
0

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

0

на паскале

0

ну и на том спасибо

0

ок

0

готово