![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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; |