Не совсем верно, но очень близко.
uses crt;
const nmax=100;
var a:array[1..nmax] of integer;
n,i,j,k:byte;
begin
clrscr;
repeat
write('Размер массива до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Введите элементы массива:');
for i:=1 to n do
write('a[',i,']=');
readln(a[i]);
end;
writeln('Массив:');
write(a[i]:4);
writeln;
k:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[j]=a[i] then k:=k+1;
if k=1 then write('В массиве только 2 одинаковых элемента')
else write('В массиве не 2 одинаковых элемента');
readln
end.
Объяснение:
##
var n: BigInteger;
while True do
var s := ReadString('Введи число:');
if BigInteger.TryParse(s, n) then
break
else
Println('Неверный ввод, повторите')
n := Abs(n);
var (s, p) := (0bi, 1bi);
while n > 0 do
var d := n mod 10;
s += d;
if d mod 2 <> 0 then p *= d;
n := n div 10
Print(s, p)
Не совсем верно, но очень близко.
uses crt;
const nmax=100;
var a:array[1..nmax] of integer;
n,i,j,k:byte;
begin
clrscr;
repeat
write('Размер массива до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Введите элементы массива:');
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
clrscr;
writeln('Массив:');
for i:=1 to n do
write(a[i]:4);
writeln;
writeln;
k:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[j]=a[i] then k:=k+1;
if k=1 then write('В массиве только 2 одинаковых элемента')
else write('В массиве не 2 одинаковых элемента');
readln
end.
Объяснение:
##
var n: BigInteger;
while True do
begin
var s := ReadString('Введи число:');
if BigInteger.TryParse(s, n) then
break
else
Println('Неверный ввод, повторите')
end;
n := Abs(n);
var (s, p) := (0bi, 1bi);
while n > 0 do
begin
var d := n mod 10;
s += d;
if d mod 2 <> 0 then p *= d;
n := n div 10
end;
Print(s, p)