|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Преобразование букв в числа
Добрый день.
Мне необходимо спрограммировать следующие действия: 1. Каждой букве русского алфавита присваивается последовательно число от одного до тридцати трёх. 2. В строке вводится любое слово. 3. Программа должна сложить все числа, которые соответствуют каждой букве слова, и выдать результат (сумму) =========== Вроде бы просто, но что-то недопонимаю - как... Спасибо. |
#2
|
|||
|
|||
Ну просто же все.
Если делаем номера по порядку алфавита, то можно так: Код:
function DigitizeString(S : String) : Integer; var I : Integer; begin Result := 0; S := AnsiUpperCase(S); For I := 1 To Length(S) Do If S[i] In ['А'..'Я'] Then Result := Result + (Ord(S[i]) - Ord('А') + 1); end; Если нумерация какая-то другая, то можно сделать массив с соовт номерами и брать из него значения вместо (Ord(S[i]) - Ord('А') + 1). Тоже самое, если надо номера для заглавнях и строчных букв делать разнве. Тогда еще надо убрать из кода 'S := AnsiUpperCase(S);', а в If'е учитывать и строчные буквы отдельно. |
#3
|
||||
|
||||
Цитата:
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#4
|
|||
|
|||
Цитата:
Хм, да, про Ё я как-то забыл. Ну, ее можно обработать отдельно: Код:
function DigitizeString(S : String) : Integer; var I : Integer; begin Result := 0; S := AnsiUpperCase(S); For I := 1 To Length(S) Do If S[i] In ['А'..'Я'] Then Result := Result + (Ord(S[i]) - Ord('А') + 1); If S[i] = 'Ё' Then Result := Result + (Ord('Я') - Ord('А') + 2); end; |