Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 05.10.2014
Сообщений: 17
1

Подсчитать количество локальных минимумов в матрице

06.04.2015, 22:13. Показов 3012. Ответов 2
Метки нет (Все метки)

Соседями элемента в данной задаче являются переменные, как слева-справа, так и сверху-снизу?

"Дана вещественная матрица M x N, заполненная случайными числами. Соседями

элемента aij являются элементы akl:

i-1<=k<=i+1; j-1<=l<=j+1, причем (i,j)!=(k,l). Подсчитать количество локальных

минимумов в матрице. Локальный минимум – элемент, строго меньший всех своих

соседей."
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2015, 22:13
Ответы с готовыми решениями:

Подсчитать количество локальных минимумов в заданной матрице
Помогите кто чем может, заранее спасибо) Задание:Элемент матрицы называется локальным минимумом,...

Подсчитать количество локальных минимумов заданной матрицы
Задание: Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у...

Подсчитать количество локальных минимумов заданной матрицы
Подсчитать количество локальных минимумов заданной матрицы размером 10 х 10. Элемент матрицы...

Подсчитать количество локальных минимумов заданной матрицы
Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него...

2
351 / 344 / 279
Регистрация: 21.05.2013
Сообщений: 1,312
07.04.2015, 01:35 2
Лучший ответ Сообщение было отмечено iChrom как решение

Решение

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
51
52
53
54
55
56
57
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    class Program
    {
        int FindCount(int n,int m)
        {
            Random random = new Random();
            int count = 0;
            int[,] mas = new int [n,m];
 
            for (int i = 0; i < mas.GetLength(0); i++)
            {
                for (int j = 0; j < mas.GetLength(1); j++)
                {
                    mas[i, j] = random.Next(-10,10);
                    Console.Write(mas[i, j] + " ");
                }
                Console.WriteLine();
            }
 
            Console.Write("List index = ");
            for (int i = 1; i < mas.GetLength(0) - 1; i++)
            {
                for (int j = 1; j < mas.GetLength(1) - 1; j++)
                {
                    if
                        (
                            (mas[i, j] < mas[i, j - 1])
                        && (mas[i, j] < mas[i - 1, j])
                        && (mas[i, j] < mas[i, j + 1])
                        && (mas[i, j] < mas[i + 1, j])
                        )
                    {
                        count++;
                        Console.Write("[" + (i+1) + " : " + (j+1) + "] ");
                    }
                }
            }
         return count;
        }
        static void Main(string[] args)
        {
            int n, m;
            Program p = new Program();
            Console.Write("n = "); n = int.Parse(Console.ReadLine());
            Console.Write("m = "); m = int.Parse(Console.ReadLine());
            n = p.FindCount(n, m);
            Console.ReadLine();
        } 
    }
}
0
8422 / 4615 / 1807
Регистрация: 11.02.2013
Сообщений: 9,822
07.04.2015, 03:12 3
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
    class Program {
        static void Main(string[] args) {
            double[,] m = new double[7, 7];
            m.FillWithRandom();//Заполнение матрицы
            m.Print(m.FindLocalMins());//Подсчёт локальных минимумов и вывод в консоль
            Console.Read();
        }
    }
 
    public static class Matrix {
        /// <summary>
        /// Вывод матрицы в консоль с подсветкой указанных элементов
        /// </summary>
        /// <param name="m">матрица</param>
        /// <param name="addresses">Адреса элементов, которые нужно подсветить</param>
        public static void Print(this double[,] m, params Address[] addresses) {
            for (int i = 0; i < m.GetLength(0); i++) {
                for (int j = 0; j < m.GetLength(1); j++) {
                    if (addresses.Contains(new Address(i, j)))
                        Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.Write("{0,-9:f3}", m[i, j]);
                    Console.ResetColor();
                }
                Console.WriteLine();
            }
        }
 
        /// <summary>
        /// Поиск локальных минимумов — элементов, которые меньше своих соседей по строке и столбцу
        /// </summary>
        /// <param name="m">Матрица</param>
        /// <returns></returns>
        public static Address[] FindLocalMins(this double[,] m) {
            List<Address> list = new List<Address>();
            for (int i = 1; i < m.GetLength(0) - 1; i++) {
                for (int j = 1; j < m.GetLength(1) - 1; j++) {
                    if (!(m[i, j] < m[i - 1, j] &&
                        m[i, j] < m[i, j + 1] &&
                        m[i, j] < m[i + 1, j] &&
                        m[i, j] < m[i, j - 1])) continue;
                    list.Add(new Address(i, j));
                }
            }
            Address[] result = new Address[list.Count];
            list.CopyTo(result);
            return result;
        }
 
        /// <summary>
        /// Заполнение матрицы случайными числами
        /// </summary>
        /// <param name="m">Матрица</param>
        public static void FillWithRandom(this double[,] m) {
            Random rnd = new Random(DateTime.Now.Millisecond);
            for (int i = 0; i < m.GetLength(0); i++) {
                for (int j = 0; j < m.GetLength(1); j++) {
                    m[i, j] = rnd.NextDouble(-m.Length, m.Length);
                }
            }
        }
    }
    /// <summary>
    /// Адрес элемента в матрице
    /// </summary>
    public struct Address {
        /// <summary>
        /// Номер строки
        /// </summary>
        public int Row { get; private set; }
        /// <summary>
        /// Номер столбца
        /// </summary>
        public int Column { get; private set; }
 
        public Address(int i, int j)
            : this() {
            Row = i;
            Column = j;
        }
    }
 
    /// <summary>
    /// Класс расширений для Random
    /// </summary>
    public static class ExtRandom {
        public static double NextDouble(this Random rnd, double max, double min) {
            return rnd.NextDouble() * (max - min) + min;
        }
    }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2015, 03:12

Подсчитать количество локальных минимумов заданной матрицы 10 x 10
помогите пожалуйста исправить код. не правильно считает количество логических минимумов using...

Подсчитать количество локальных минимумов заданной матрицы
Помогите пожалуйста, сделать лабу :cry: Лабораторная работа 6. Двумерные массивы Задание: ...

Подсчитать количество локальных минимумов заданной матрицы размером 10x10
написал код к заданию:(Элемент матрицы называется локальным минимумом, если он строго меньше всех...

Подсчитать количество локальных минимумов заданной матрицы размером 10x10
Помогите пожелуйста Сам не шарю пытался, но каша Элемент матрицы называется локальным...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru