Дан целочисленный массив из 23 элементов, заданных случайным образом. Вывести все содержащиеся в данном массиве нечетные числа в порядке возрастания, а также их количество К.


polka125: А на каком языке всё это?
tontobt2: паскаль

Ответы

Ответ дал: polka125
1

Ответ:

Объяснение:

program odd;

var

arr1, arr2: array[1..23] of integer;

i, cnt, tmp, buffer: integer;

begin

   writeln('исходный массив:');

   for i := 1 to 23 do

   begin

       arr1[i] := random(100);

       write(arr1[i], ' ');

   end;

   writeln();

   cnt := 0; //считем сколько нечетных, переносим в другой массив

   for i := 1 to 23 do

   begin

       if arr1[i] mod 2 <> 0 then

       begin

           cnt := cnt + 1;

           arr2[cnt] := arr1[i];

       end;

   end;

   //сортируем arr2 пузырьком

   for i := (cnt - 1) downto 1 do

   begin

       tmp := i;

       while ((tmp < cnt) and (arr2[tmp] > arr2[tmp + 1])) do

       begin

           //swap

           buffer := arr2[tmp];

           arr2[tmp] := arr2[tmp + 1];

           arr2[tmp + 1] := buffer;

           

           tmp := tmp + 1;

       end;

   end;

   Writeln('отсортированные нечетные:');

   for i := 1 to cnt do

       write(arr2[i], ' ');

   writeln();

   writeln('всего: ', cnt);

end.


polka125: а что, sort уже изобрели?)
polka125: Ладно-ладно, убедили, ваш Паскаль лучше моего, и мне нет оправдантя
KnowsUser1: Для типов Array of T, Sequence of T, IEnumerable и им подобных, стандартная библиотека PascalABC.NET (Осовременная версия Pascal, построенная на базе .NET Framework) имеет метод-расширение .Sorted, возвращающий последовательность, отсортированную по возрастанию.
KnowsUser1: Так же PascalABC.NET содержит 6 перегрузок функции Sort(), сортирующей переданный массив/List по возрастанию/убаванию/на основании функции сравнения
polka125: Да, я понял, паскаль притворяется современным прогрессивным языком с кучей плюшек. Но если преподаватель прогрессивный, то скорее всего будет преподавать что-то другое (javu, питон, плюсы, ...), а если не прогрессивный, то, скорее всего, он хочет видеть именно паскаль 97-го
polka125: Впрочем, насаждать 2020 год дело благородное, и я полностью поддерживаю. А разнообразие ответов позволит спрашивающему выбрать тот, который больше подходит его индивидуальной ситуации
KnowsUser1: PascalABC.NET разрабатывается как учебный проект. Он сохраняет хоть и многословный, но простой и понятный синтаксис классического паскаль, но при этом даёт возможность человеку работать с .NET Framework и всеми его "плюшками", что позволяет в очень скором времени перейти с паскаля на нормальный язык, например C#.
polka125: Хорошо, я снимаю все вопросы и полностью согласен:) Пусть хоть один спор в интернете закончится определенностью.
LRSM: "с паскаля на нормальный язык" - мне послышалось, или Вы только что назвали PascalABC.NET "не нормальным"? ;)
Его ведь используют не только для обучения, но во многих других сферах, необязательно связанным напрямую с "профессиональным" программированием.
KnowsUser1: Ну я имел в виду языки, более часто применяемые именно в промышленной разработке.
Ответ дал: KnowsUser1
0

Ответ:

--- PascalABC.NET 3.6.2 ---

begin

 var A := ArrRandom(23, -99,99);

 A.Where(p -> p mod 2 <> 0).Sorted.Println.Count.Println;

end.

Да, это полноценная работающая программа, решающая вашу задачу.

Вас заинтересует