Как найти наименьший элемент строки матрицы

asdfgre

1 / 1 / 0

Регистрация: 26.04.2015

Сообщений: 5

1

Найти наименьший элемент в каждой строке матрицы

17.05.2015, 12:14. Показов 16294. Ответов 4

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Дана матрица A(3,4). Найти наименьший элемент в каждой строке матрицы. Вывести исходную матрицу и результаты вычислений.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            dataGridView1.RowCount = 4; //Указываем количество строк
            dataGridView1.ColumnCount = 3; //Указываем количество столбцов
            int[,] a = new int[4, 3]; //Инициализируем массив
            int i, j;
            //Заполняем матрицу случайными числами
            Random rand = new Random();
            for (i = 0; i < 4; i++)
                for (j = 0; j < 3; j++)
                    a[i, j] = rand.Next(-100, 100);
            //Выводим матрицу в dataGridView1
            for (i = 0; i < 4; i++)
                for (j = 0; j < 3; j++)
                    dataGridView1.Rows[i].Cells[j].Value = Convert.ToString(a[i, j]);
            
            int m = int.MaxValue;
            for (i = 0; i < 4; i++)
                for (j = 0; j < 3; j++)
 
                    if (a[0, j] <m) m = a[0, j];
            // выводим результат
            textBox1.Text = Convert.ToString(m);
 
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
    }
}

Добавлено через 1 минуту
Выводит минимальный элемент только для первой строки. Не знаю как сделать, чтобы выводил минимальный элемент для каждой строки



1



Alon437

20 / 20 / 10

Регистрация: 25.03.2014

Сообщений: 39

17.05.2015, 12:29

2

Лучший ответ Сообщение было отмечено Ev_Hyper как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int[,] a = new int[4, 3]; //Инициализируем массив
            int i, j;
            //Заполняем матрицу случайными числами
            Random rand = new Random();
            for (i = 0; i < 4; i++)
                for (j = 0; j < 3; j++)
                    a[i, j] = rand.Next(-100, 100);
            //производим поиск максимального элемента на дополнительной диагонали
            int[] m = new int[4]{int.MaxValue, int.MaxValue, int.MaxValue, int.MaxValue};
            for (i = 0; i < 4; i++)
            {
                for (j = 0; j < 3; j++)
                    if (a[i, j] < m[i]) m[i] = a[i, j];
                // выводим результат
                textBox1.Text += m[i].ToString() + ':';
            }



3



Даценд

Эксперт .NET

5863 / 4740 / 2940

Регистрация: 20.04.2015

Сообщений: 8,361

17.05.2015, 12:34

3

C#
1
2
3
4
5
6
7
for (i = 0; i < 4; i++)
{
    min=a[i,0];
    for (j = 1; j < 3; j++)
        if (a[i, j] < min) min = a[i, j];
    textBox1.Text+=min.ToString+" ";
}



1



1 / 1 / 0

Регистрация: 26.04.2015

Сообщений: 5

17.05.2015, 12:56

 [ТС]

4

Спасибо! Все работает



0



20 / 20 / 10

Регистрация: 25.03.2014

Сообщений: 39

17.05.2015, 13:03

5

asdfgre, небольшой совет: чтобы вставить код воспользуйтесь тегом CSHARP:



1



Given a matrix, the task is to find the minimum element of each row and each column.

Examples: 

Input: [1, 2, 3]
        [1, 4, 9]
        [76, 34, 21]
Output: Minimum element of each row is {1, 1, 21}
Minimum element of each column is {1, 2, 3}

Input: [1, 2, 3, 21]
       [12, 1, 65, 9]
       [11, 56, 34, 2]
Output: Minimum element of each row is {1, 1, 2}
Minimum element of each column is {1, 2, 3 , 2}

Approach: The idea is to run the loop for no_of_rows. Check each element inside the row and find for the minimum element. Finally, print the element. Similarly, check each element inside the column and find for the minimum element. Finally, print the element.

Below is the implementation of the above approach:

C++

#include<bits/stdc++.h>

using namespace std;

const int MAX = 100;

void smallestInRow(int mat[][MAX], int n, int m)

{

    cout << " { ";

    for (int i = 0; i < n; i++) {

        int minm = mat[i][0];

        for (int j = 1; j < m; j++) {

            if (mat[i][j] < minm)

                minm = mat[i][j];

        }

        cout << minm << ", ";

    }

    cout << "}";

}

void smallestInCol(int mat[][MAX], int n, int m)

{

    cout << " { ";

    for (int i = 0; i < m; i++) {

        int minm = mat[0][i];

        for (int j = 1; j < n; j++) {

            if (mat[j][i] < minm)

                minm = mat[j][i];

        }

        cout << minm << ", ";

    }

    cout << "}";

}

int main()

{

    int n = 3, m = 3;

    int mat[][MAX] = { { 2, 1, 7 },

                       { 3, 7, 2 },

                       { 5, 4, 9 } };

    cout << "Minimum element of each row is ";

    smallestInRow(mat, n, m);

    cout << "nMinimum element of each column is ";

    smallestInCol(mat, n, m);

    return 0;

}

C

#include <stdio.h>

#define MAX 100

void smallestInRow(int mat[][MAX], int n, int m)

{

  printf(" { ");

  for (int i = 0; i < n; i++) {

    int minm = mat[i][0];

    for (int j = 1; j < m; j++) {

      if (mat[i][j] < minm)

        minm = mat[i][j];

    }

    printf("%d, ",minm);

  }

  printf("}");

}

void smallestInCol(int mat[][MAX], int n, int m)

{

  printf(" { ");

  for (int i = 0; i < m; i++) {

    int minm = mat[0][i];

    for (int j = 1; j < n; j++) {

      if (mat[j][i] < minm)

        minm = mat[j][i];

    }

    printf("%d, ",minm);

  }

  printf("}");

}

int main()

{

  int n = 3, m = 3;

  int mat[][MAX] = { { 2, 1, 7 },

                    { 3, 7, 2 },

                    { 5, 4, 9 } };

  printf("Minimum element of each row is ");

  smallestInRow(mat, n, m);

  printf("nMinimum element of each column is ");

  smallestInCol(mat, n, m);

  return 0;

}

Java

public class GFG {

    final static int MAX = 100;

    static void smallestInRow(int mat[][], int n, int m) {

        System.out.print(" { ");

        for (int i = 0; i < n; i++) {

            int minm = mat[i][0];

            for (int j = 1; j < m; j++) {

                if (mat[i][j] < minm) {

                    minm = mat[i][j];

                }

            }

            System.out.print(minm + ", ");

        }

        System.out.println("}");

    }

    static void smallestInCol(int mat[][], int n, int m) {

        System.out.print(" { ");

        for (int i = 0; i < m; i++) {

            int minm = mat[0][i];

            for (int j = 1; j < n; j++) {

                if (mat[j][i] < minm) {

                    minm = mat[j][i];

                }

            }

            System.out.print(minm + ", ");

        }

        System.out.print("}");

    }

    public static void main(String args[]) {

        int n = 3, m = 3;

        int mat[][] = {{2, 1, 7},

        {3, 7, 2},

        {5, 4, 9}};

        System.out.print("Minimum element of each row is ");

        smallestInRow(mat, n, m);

        System.out.print("nMinimum element of each column is ");

        smallestInCol(mat, n, m);

    }

}

Python3

MAX = 100

def smallestInRow(mat, n, m):

    print("{", end = "")

    for i in range(n):

        minm = mat[i][0]

        for j in range(1, m, 1):

            if (mat[i][j] < minm):

                minm = mat[i][j]

        print(minm, end = ",")

    print("}")

def smallestInCol(mat, n, m):

    print("{", end = "")

    for i in range(m):

        minm = mat[0][i]

        for j in range(1, n, 1):

            if (mat[j][i] < minm):

                minm = mat[j][i]

        print(minm, end = ",")

    print("}")

if __name__ == '__main__':

    n = 3

    m = 3

    mat = [[2, 1, 7],

           [3, 7, 2 ],

           [ 5, 4, 9 ]];

    print("Minimum element of each row is",

                                 end = " ")

    smallestInRow(mat, n, m)

    print("Minimum element of each column is",

                                    end = " ")

    smallestInCol(mat, n, m)

C#

using System;

class GFG

{

readonly static int MAX = 100;

static void smallestInRow(int [,]mat,

                          int n, int m)

{

    Console.Write(" { ");

    for (int i = 0; i < n; i++)

    {

        int minm = mat[i, 0];

        for (int j = 1; j < m; j++)

        {

            if (mat[i, j] < minm)

            {

                minm = mat[i, j];

            }

        }

        Console.Write(minm + ", ");

    }

    Console.WriteLine("}");

}

static void smallestInCol(int [,]mat,

                          int n, int m)

{

    Console.Write(" { ");

    for (int i = 0; i < m; i++)

    {

        int minm = mat[0, i];

        for (int j = 1; j < n; j++)

        {

            if (mat[j, i] < minm)

            {

                minm = mat[j, i];

            }

        }

        Console.Write(minm + ", ");

    }

    Console.Write("}");

}

public static void Main()

{

    int n = 3, m = 3;

    int [,]mat = {{2, 1, 7},

                   {3, 7, 2},

                  {5, 4, 9}};

    Console.Write("Minimum element of " +

                         "each row is ");

    smallestInRow(mat, n, m);

    Console.Write("nMinimum element of " +

                        "each column is ");

    smallestInCol(mat, n, m);

}

}

PHP

<?php

$MAX = 100;

function smallestInRow(&$mat, $n, $m)

{

    echo " { ";

    for ($i = 0; $i < $n; $i++)

    {

        $minm = $mat[$i][0];

        for ($j = 1; $j < $m; $j++)

        {

            if ($mat[$i][$j] < $minm)

                $minm = $mat[$i][$j];

        }

        echo $minm . ", ";

    }

    echo "}";

}

function smallestInCol(&$mat, $n, $m)

{

    echo " { ";

    for ($i = 0; $i < $m; $i++)

    {

        $minm = $mat[0][$i];

        for ($j = 1; $j < $n; $j++)

        {

            if ($mat[$j][$i] < $minm)

                $minm = $mat[$j][$i];

        }

        echo $minm . ", ";

    }

    echo "}";

}

$n = 3;

$m = 3;

$mat = array(array( 2, 1, 7 ),

             array( 3, 7, 2 ),

             array( 5, 4, 9 ));

echo "Minimum element of each row is ";

smallestInRow($mat, $n, $m);

echo "nMinimum element of each column is ";

smallestInCol($mat, $n, $m);

?>

Javascript

<script>

let MAX = 100;

    function smallestInRow(mat,n,m) {

        document.write(" { ");

        for (let i = 0; i < n; i++) {

            let minm = mat[i][0];

            for (let j = 1; j < m; j++) {

                if (mat[i][j] < minm) {

                    minm = mat[i][j];

                }

            }

            document.write(minm + ", ");

        }

        document.write("}"+"<br>");

    }

    function smallestInCol(mat,n,m) {

        document.write(" { ");

        for (let i = 0; i < m; i++) {

            let minm = mat[0][i];

            for (let j = 1; j < n; j++) {

                if (mat[j][i] < minm) {

                    minm = mat[j][i];

                }

            }

            document.write(minm + ", ");

        }

        document.write("}");

    }

        let n = 3, m = 3;

        let mat = [[2, 1, 7],

        [3, 7, 2],

        [5, 4, 9]];

        document.write("Minimum element of each row is ");

        smallestInRow(mat, n, m);

        document.write("nMinimum element of each column is ");

        smallestInCol(mat, n, m);

</script>

Output

Minimum element of each row is  { 1, 2, 4, }
Minimum element of each column is  { 2, 1, 2, }

Complexity Analysis:

  • Time complexity: O(n*m), as we are using nested for loops to traverse the Matrix.
  • Auxiliary Space: O(1), as we are not using any extra space.

Last Updated :
09 Sep, 2022

Like Article

Save Article

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
           Console.WriteLine("Введите размерность матрецы n m = ");
            int m =  Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("n n = ");
            int n = Convert.ToInt32(Console.ReadLine());
            // Объявляем двумерный массив
            int[,] matrix = new int[m, n];
 
            Random ran = new Random();
 
            // Инициализируем данный массив
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    matrix[i, j] = ran.Next(1, 15);
                    Console.Write("{0}t", matrix[i, j]);
                }
                Console.WriteLine();
            }
 
            Console.WriteLine("nМинимальное значение в строках: ");
            for (int i = 0; i < m; i++)
            {
                int minLine = matrix[i, 0];
                for (int j = 0; j < n; j++)
                {
                    if (matrix[i, j] < minLine)
                    {
                        minLine = matrix[i, j];
                    }                   
                }
                Console.WriteLine("Строка {0}, значение: {1}", i, minLine);
                Console.WriteLine();
            }
 
            Console.ReadKey();
        }
    }
}

Задание: Дана матрица B[N, М]. Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их с первым и последним элементами строки соответственно.

Я сделал код — в итоге не работает: При вводе двух чисел ошибка сразу, а вот поменять их с первым и последним элементами строки — я не понимаю как сделать. Что не так? Заранее благодарю.

N = int(input())
M = int(input())
B = [[random.randrange(10) for i in range(N)] for j in range(N)]
for i in range(N, M):
    if B[i][j] >= 0:
        print('Максимальный элемент:', B)
    if B[i][j] < 0:
        print('Минимальный элемент:', B)

задан 6 мая 2020 в 16:50

Laurasia Ultima's user avatar

2

import random

N = int(input())
M = int(input())
B = [[random.randrange(10) for i in range(M)] for j in range(N)] # был неверно задан внутренний range
# для подобных случаев (когда нужен и индекс, и элемент) лучше воспользоваться enumerate
for i, row in enumerate(B):
    max = min = 0
    # поиск индексов максимального и минимального элемента
    for j, elem in enumerate(row):
        if elem > row[max]:
            max = j
        if elem < row[min]:
            min = j
    # меняем местами максимальный и нулевой
    row[max], row[0] = row[0], row[max]
    # меняем местами минимальный и последний
    row[min], row[-1] = row[-1], row[min]
print(B)

ответ дан 6 мая 2020 в 17:06

Евгений's user avatar

ЕвгенийЕвгений

4,4872 золотых знака8 серебряных знаков28 бронзовых знаков

Решение писать не буду, но направлю твоё мышление, потому-что у тебя сейчас код написан просто «от балды», и не делает вообще ничего

Первым дело ты определил что размер матрицы (i x j), где i — высота матрицы (строки), j — ширина (столбцы)
По заданию, нужно найти минимальное значение в каждой строке матрицы, соответственно перебираем строки

for (let i = 0, i < mass.length, i++) {
  // mass[i] это строка массива в каждой итерации цикла
}

до этого момента у тебя всё правильно, а теперь начинаются ошибки. По логике, чтобы найти минимальное значение в строке, нужно пройтись по каждому элементу в текущей строке mass[i], соответственно количество итераций, во втором цикле, должно быть равно mass[i].length, а не mass.length, как у тебя сейчас

for (let j = 0, j < mass[i].length, j++) {
  // mass[i][j] это каждый столбец в строке 
}

теперь, остаётся только сравнивать каждый элемент mass[i][j], и найти минимальный, для этого перед началом цикла, тебе нужно создать переменную, в которую ты запоминаешь минимальное значение. Ты пытался это сделать, но присваиваешь s = 0, хотя лучше занести сюда первое значение в массиве let min = mass[i][0] (задаю название переменной так, чтобы было понятно что она означает)
И перебирая элементы в цикле, ты должен сравнивать значение текущего минимального (min) и значение текущего элемента (mass[i][j]), если элемент текущий получился меньше, то присваиваешь его значение в минимальному

// вариант 1.
if (min > mass[i][j]) min = mass[i][j];

// вариант 2.
min = Math.min(min, mass[i][j]);

по окончанию цикла, у тебя в переменной min, будет минимальное значение в строке матрицы

for (let i = 0, i < mass.length, i++) {
  // mass[i] это строка массива в каждой итерации цикла
  // тут создавай переменную min
  for (let j = 0, j < mass[i].length, j++) {
    // mass[i][j] это каждый столбец в строке 
    
    // тут сравнивай текущее значение с минимальным
  }
  // тут у тебя min будет минимальным в строке
}

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

Не пропустите также:

  • Как найти подлежащие в немецком языке
  • Как найти видео по образцу
  • Светящийся корень террария как найти
  • Как найти консоль администрирования сервера 1с
  • Как найти индекс вещества по химии

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии