Сайжанов
?>

Нужна по информатике задать массив из 8 элементов. найти наибольший элемент массива и отсортировать по убыванию (программа паскаль)

Информатика

Ответы

Анатольевич-Фатима
Const
  n = 8;

var
  a: array[1..n]of integer;
  i, j, k, max: integer;

begin
  max := -MaxInt;
  for i := 1 to n do
  begin
    write('a[', i, ']= ');
    readln(a[i]);
    if a[i] > max then max := a[i];
  end;
  writeln(' максимальный элемент массива = ', max);
  //сортировка методом пузырька
  for i := 1 to n - 1 do
    for j := 1 to n - i do
      if a[j] < a[j + 1] then begin
        k := a[j];
        a[j] := a[j + 1];
        a[j + 1] := k
      end;
  //вывод массива
  for i := 1 to n do write(a[i]:4);
end.

Тестовое решение:
a[1]= 12
a[2]= 4
a[3]= 6
a[4]= 23
a[5]= 4
a[6]= 7
a[7]= 8
a[8]= 1
 максимальный элемент массива = 23
  23  12   8   7   6   4   4   1
карпова581
Судя по всему, здесь в цикле складываются квадраты всех нечетных чисел от m до n включительно.

m & 1 - это битовая конъюнкция. Результатом будет 1, если m нечетное, и 0, если m - четное (то есть, содержит или не содержит соответствующий разряд)

Выражение вида T ? X : Y, где T - логическое высказывание, принимает значение X, если T истинно, и Y, если T ложно.

Соответственно, i = (m & 1) == 1 ? m : m + 1 означает, что
если m нечетное, то i = m
если четное, i = m+1 (то есть, первое нечетное число после m)

i += 2 означает, что цикл идет с шагом, соответственно, рассматриваются только нечетные числа.
Бернард pokerman
Const
 n = 20;

var
 pos,neg: integer;
 i,k,x: integer;
 ev,un: integer;
 a,b: array [1..n] of integer;

begin
 for i := 1 to n do
   read(a[i]);
  k := 0;
 pos := 0;
 neg := 0;
  for i := 1 to n do
   begin
      ev := 0;
   un := 0;
      x := a[i];
      if x <> 0 then
     if x > 0 then
       if (x < pos) or (pos = 0) then
         pos := x
       else
     else
       if (x > neg) or (neg = 0) then
         neg := x;
      x := abs(x);
      while x <> 0 do
     begin
     if odd(x) then
       un := un + 1
     else
       ev := ev + 1;
     x := x div 10
     end;
      if un = ev then
     begin
     k := k + 1;
     b[k] := a[i]
     end
      end;

 writeln(pos,' ',neg);
 for i := 1 to k do
   write(b[i],' ')
 end.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Нужна по информатике задать массив из 8 элементов. найти наибольший элемент массива и отсортировать по убыванию (программа паскаль)
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

VASILEVNA
dentalfamily
Timurr007
vnolenev
stasletter
lepekhov4011
yulyaderesh
mashiga2632
Мария Кашихина
mgrunova3966
market-line5260
vanvangog199826
vladimir152
elena-ruzadom
mashiga2632