М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
ЯЯЯ03
ЯЯЯ03
20.08.2021 21:18 •  Информатика

Дана матрица целых чисел размером 5х6. переставить столбцы так,чтобы сумма их элементов убывала

👇
Ответ:
angelina2334e35r5
angelina2334e35r5
20.08.2021
Const
  m = 6;
  n = 9;

type
  R = record
    sum: integer;
    nom: integer
  end;
  vR = array[1..n] of R;
  tm = array[1..m, 1..n] of integer;

function SumCol(a: tm; k: integer): integer;
{ Сумма элементов в k-м столбце (колонке) матрицы а }
var
  i, s: integer;
begin
  s := 0;
  for i := 1 to m do
    s := s + a[i, k];
  SumCol := s
end;

procedure Swp(var a, b: R);
{ Меняет местами элементы a и b }
var
  t: R;
begin
  t := a; a := b; b := t
end;

procedure Shell(var a: vR);
{ сортировка методом Шелла по убыванию }
var
  i, j, step: integer;

begin
  step := n div 2;
  while step > 0 do
  begin
    for j := n - step downto 1 do
    begin
      i := j;
      while i <= n - step do
      begin
        if a[i].sum < a[i + step].sum then Swp(a[i], a[i + step]);
        i := i + step
      end
    end;
    step := step div 2
  end
end;

var
  a, c: tm;
  b: vR;
  i, j: integer;

begin
  Randomize;
  Writeln('*** Исходные элементы массива ***');
  for i := 1 to m do
  begin
    for j := 1 to n do
    begin a[i, j] := Random(101) - 50; Write(a[i, j]:4) end;
    Writeln
  end;
  { формируем вектор сумм по столбцам }
  for j := 1 to n do
  begin
    b[j].sum := SumCol(a, j);
    b[j].nom := j;
  end;
  { сортируем полученный вектор по убыванию сумм }
  Shell(b);
  { осуществляем перестановку во вс массив с}
  for j := 1 to n do
    for i := 1 to m do c[i, j] := a[i, b[j].nom];
  { копируем содержимое вс массива с в массив а }
  Writeln('*** Результирующие элементы массива ***');
  for i := 1 to m do
  begin
    for j := 1 to n do
    begin
      a[i, j] := c[i, j];
      Write(a[i, j]:4)
    end;
    Writeln
  end
end.

Тестовое решение:
*** Исходные элементы массива ***
 -27  13  13 -15   8  27  28  -1  32
  44  36  20 -39  45 -46  29  18  36
 -14 -36  -5  35  36 -14  24  31 -19
 -42 -34 -44  40  50 -21 -17 -30  37
 -38  22 -46   9 -14  42 -10   1  30
  41 -41 -21  21  39 -45  18   4  -3
*** Результирующие элементы массива ***
   8  32  28 -15  -1 -27  13  27  13
  45  36  29 -39  18  44  36 -46  20
  36 -19  24  35  31 -14 -36 -14  -5
  50  37 -17  40 -30 -42 -34 -21 -44
 -14  30 -10   9   1 -38  22  42 -46
  39  -3  18  21   4  41 -41 -45 -21
4,4(12 оценок)
Открыть все ответы
Ответ:
srySyutoduofyi
srySyutoduofyi
20.08.2021

1.y=m1*m2/Sqr(r)

2. Program my;

var S,a,b,h:real;

begin

write('Введите длины оснований и высоты');

readln(a,b,h);

S:=(a+b)*h/2;

readln(S);

end.

3. Program my;

var a:integer;

begin

writeln('Введите трехзначное число');

readln(a);

If (a mod 10=7) then write('Данное число заканчивается на 7');

else write('Данное число не заканчивается на 7');

end.

4.Program my;

var a,b,:integer;

begin

readln(a,b);

If (a>b) then writeln(Sqr(a), b+10);

If (a=b) then writeln('Числа равны');

If (a<b) then writeln(Sqr(b), a+10);

end.

5. 

Program my;
var a,b,c:integer;
begin
Readln(a,b);
For c:=a to b do
if (c mod 10=0) then
writeln (c);
end.

 

4,7(66 оценок)
Ответ:
shadow909
shadow909
20.08.2021
1) а) на Java
class example{
    public static void main (String[] args){
        int k = 0, j = 0;
        for (int i = 0; i < 10; i++){
            k = k + 5;
            j = j + k;
            if (i == 9)
            System.out.print(k);
            else
            System.out.print(k + " + ");
        }
        System.out.print(" = " + j);
    }
}
б) на Pascal
var a,b,c:integer;
begin
for a:=1 to 10 do
begin
b:=b+5;
c:=c+b;
if (a = 10) then write(b)
else write(b, ' + ')
end;
write(' = ', c);
end.
2) а) на Java
class example{
    public static void main(String args[]){
        for (int x = 50; x >= 40; x--){
        double y = (5 * x) + (Math.pow(x, 2));
        int i = (int) y;
        System.out.println(i);
        }
    }
}
б) на Pascal
var y:real;
x:integer;
begin
for x:=50 downto 40 do
begin
y:=(5*x)+sqr(x);
writeln(y:0:0);
end;
end.
4,8(2 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ