Ответ только на первую задачу.
крестик в таблице это не подходящая фамилия.
ужно каждой букве русского алфавита задать номер от 0 до 31. Максимальный номер (31) можно представить как двоичное число 31 =11111. Так как номеров больших 31 нет, то для кодирования русских букв достаточно пятизначного двоичного числа. Дальше необходимо разбить цепочку - шифр на группы из пяти знаков справа налево.
01111 = 15 - П
10011 = 19 - У
11000 = 24 - Ш
10100 = 10 - К
01000 = 8 - И
01101 = 13 - Н.
// PascalABC.NET 3.3, сборка 1611 от 06.01.2018
// Внимание! Если программа не работает, обновите версию!
Begin
var a:= ArrRandom(15,0,50);a.PrintLn;
Writeln(a.Where(t -> t < 50).Count);
end.
Пример:
16 38 2 12 48 5 18 12 27 12 48 5 6 43 28
15
Первая программа
var x,s,z:integer;
begin
writeln('Введите целое число:');
readln(x);
z:=x;
while z <> 0 do begin
s:=s + z mod 10;
z:=z div 10;
end;
writeln('Сумма цифр числа ',x,' равна ',s);
end.
Вторая программа
var x,i,z,j,k,leng:integer;
a:array of integer;
begin
writeln('Введите целое число:');
readln(x);
z:=x;
while z <> 0 do begin
leng += 1;
z:=z div 10;
end;
SetLength(a,leng+1);
for i:=leng downto 1 do begin
a[i]:=x mod 10;
x:=x div 10;
end;
for i:=1 to leng do begin
for j:=i to leng-1 do begin
if(a[i] = a[j+1]) then
k += 1;
end;
end;
if(k > 0) then
writeln('Да')
else
writeln('Нет');
end.
===== PascalABC.NET =====
function sogl(c: char) :=
not (c.ToUpper in ('АЕЁИОУЫЭЮЯ'));
// проверка функции
begin
var s := 'ТестируемРусскийАлфавит';
foreach var c in s do
Print(sogl(c));
end.
На самом деле все это будет правильно работать лишь если функции давать исключительно русские буквы.