// PascalABC.Net
// Первая программа, если необходимо выбрать нечетные элементы и их отсортировать.
begin
var a := ArrRandom(10);
writeln('Исходный массив: ');
a.PrintLn(', ');
writeln('Отсортированный массив нечетных элементов: ');
a.Where(e -> e mod 2 <> 0).OrderBy(e -> e).Print(', ');
end.
// Вторая программа, если необходимо в исходном массиве отсортировать нечетные значения
begin
var a := ArrRandom(10);
writeln('Исходный массив: ');
a.PrintLn(', ');
writeln('Отсортированный массив нечетных элементов: ');
var odd := a.Select((e, i) -> (i, e)).Where(e -> e[1] mod 2 <> 0).OrderBy(e -> e[1]);
var sortedOdd := odd.Zip(odd.Select(e -> e[0]).OrderBy(e -> e), (f, s) -> (s, f[1]));
foreach var e in sortedOdd do
a[e[0]] := e[1];
a.PrintLn(', ');
end.
type
base = record
id: integer;
ball: integer;
end;
var
t: text;
a: array of array of integer;
n: integer;
st, tmp: string;
err: integer := 1;
database: base;
begin
readln(n);
setlength(a, n);
for i: integer := low(a) to high(a) do
setlength(a[i], 2);
for i: integer := low(a) to high(a) do
begin
readln(st);
tmp := st;
delete(tmp, pos(' ', tmp, err), tmp.Length - pos(' ', tmp, err) + 1);
database.id := strtoint(tmp);
tmp := st;
delete(tmp, 1, pos(' ', tmp, err));
database.ball := strtoint(tmp);
a[i, 0] := database.id;
a[i, 1] := database.ball;
end;
var j: integer := 0;
assign(t, 'output.txt');
rewrite(t);
while (j <= high(a)) do
begin
if (j + 1 < high(a)) and (a[j, 1] = a[j + 1, 1]) then
if (a[j, 0] < a[j + 1, 0]) then begin
write(t, inttostr(a[j, 0])); write(t, ' '); write(t, inttostr(a[j, 1])); writeln(t,'');
write(t, inttostr(a[j + 1, 0])); write(t, ' '); write(t, inttostr(a[j + 1, 1])); writeln(t,'');
end else begin
write(t, inttostr(a[j + 1, 0])); write(t, ' '); write(t, inttostr(a[j + 1, 1])); writeln(t,'');
write(t, inttostr(a[j, 0])); write(t, ' '); write(t, inttostr(a[j, 1])); writeln(t,'');
end;
if (j+1=n) then
write(t, inttostr(a[j, 0])); write(t, ' '); write(t, inttostr(a[j, 1])); writeln(t,'');
inc(j, 2);
end;
close(t);
end.
begin
var n:=ReadlnInteger('n =');
var a:=ArrRandom(n,0,50);
a.Println;
var k:=a.Where(x->(x mod 2 <> 0)).Count;
Writeln('k = ',k);
end.
Пример:
n = 10
0 16 46 49 19 15 17 47 18 43
k = 6