В строке 1 размещается повторяющееся ключевое слово. В строке 2 – сдвиги, соответствующие буквам ключа.
Функция КОДСИМВ(символ) в качестве результата получает код аргумента. Аргументом может быть либо символьная константа, либо адрес ячейки, в которой хранится символ. В последнем случае выдается код содержимого ячейки. Поскольку буквы английского алфавита в коде расположены по алфавиту и имеют подряд идущие номера (внутренние коды), то порядковый номер буквы в алфавите равен коду данной буквы минус код буквы «a» плюс единица. Так вычисляется сдвиг, соответствующий букве ключевого слова.
В строке 3,5,7 располагаются шифруемые слова. В ячейках строки 4, 6, 8 помещаются формулы шифрования.
Функция СИМВОЛ(код символа) возвращает символ по значению его ASCII-кода.
Функция ОСТАТ(делимое; делитель) возвращает остаток от целочисленного деления. Английский алфавит содержит 26 букв. Остатки деления на 26 – числа в диапазоне от 0 до 25. Это позволяет оставаться в пределах кодов английского алфавита (строчных букв): от кода буквы «a» до кода буквы «z».
#include <iostream>
#include <vector>
using namespace std;
int main(){
srand(time(NULL));
vector<int> a;
int n = rand() % 1001;
a.resize(n);
for(auto &i : a)
i = rand() % 1001 - 500;
int sum = 0, i = 0;
while(i < n && a[i] != 0){
sum += a[i] * (a[i] < 0);
i++;
}
cout << sum;
}