Загрузка...

Помогите с задачкой на Си, пожалуйста.

Тема в разделе C/C++ создана пользователем zerro5 16 ноя 2021. 210 просмотров

  1. zerro5
    zerro5 Автор темы 16 ноя 2021 4 14 июн 2019
    Элемент матрицы назовем седловой точкой, если он является наименьшим в своей строке и наибольшим в своем столбце. Для заданной целочисленной матрицы вывести индексы всех ее седловых точек.
     
  2. Daemon
    Daemon 16 ноя 2021 1680 8 янв 2021
    1. Посмотреть предыдущие комментарии (2)
    2. CarryDieOn
      Daemon, полностью согласен
    3. zerro5 Автор темы
      Daemon, Мужик, мне надо на Си, а не на С++.
    4. Daemon
      zerro5, просто заменить операторы cout, cin на pfintf, scanf_s - это сложность для вас?
    5. Посмотреть следующие комментарии (1)
  3. Sullyface
    const
    n = 4;
    m = 6;

    var
    a: array[1..n, 1..m] of integer; // основной массив
    Rext: array[1..n, 1..2] of integer; // номера столбцов с min и max в строках
    Cext: array[1..2, 1..m] of integer; // номера строк с min и max в столбцах
    i, j, amin, amax: integer;

    begin
    // заполняем массив А случайными числами
    Randomize;
    writeln('Исходный массив');
    for i := 1 to n do
    begin
    for j := 1 to m do
    begin
    a[i, j] := random(100) - 50;
    write(a[i, j]:4);
    end;
    writeln;
    end;
    // Заполняем массив Rext n x 2
    for i := 1 to n do
    begin
    amin := 10000; //заведомо больше a[i,j]
    amax := -10000; //заведомо меньше a[i,j]
    for j := 1 to m do
    begin
    if amin > a[i, j] then begin
    amin := a[i, j]; Rext[i, 1] := j
    end;
    if amax < a[i, j] then begin
    amax := a[i, j]; Rext[i, 2] := j
    end
    end;
    end;
    // Заполняем массив Cext 2 x m
    for j := 1 to m do
    begin
    amin := 10000; //заведомо больше a[i,j]
    amax := -10000; //заведомо меньше a[i,j]
    for i := 1 to n do
    begin
    if amin > a[i, j] then begin
    amin := a[i, j]; Cext[1, j] := i
    end;
    if amax < a[i, j] then begin
    amax := a[i, j]; Cext[2, j] := i
    end
    end
    end;
    writeln;
    // Ищем седловые точки
    writeln('*** Седловые точки ***');
    for i := 1 to n do
    begin
    j := Rext[i, 1];
    if Cext[2, j] = i then
    write('[', i, ',', j, '] ')
    else begin
    j := Rext[i, 2];
    if Cext[1, j] = i then
    write('[', i, ',', j, '] ')
    end
    end;
    writeln
    end.

    Тестовое решение:

    Исходный массив
    35 34 -17 -33 20 -29
    -8 -31 -4 -20 8 -1
    -39 -7 -12 27 42 9
    32 13 -17 37 19 -24

    *** Седловые точки ***
    [2,5]
     
    1. sikatorr
      Sullyface, так это же паскаль...
  4. zerro5
    zerro5 Автор темы 16 ноя 2021 4 14 июн 2019
    Всем спасибо за помощь
     
Top
Загрузка...