Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 19.04.2011
Сообщений: 22
1

Вычислить количество элементов матрицы, которые больше всех имеющихся у него соседей и сформировать их них одномерный массив.

25.03.2012, 21:42. Показов 1806. Ответов 5
Метки нет (Все метки)

Здраствуйте, уважаемые. Хочу попросить совета т.к мне в голову ничего не приходит совсем, и в интернете найти информации не могу. Задание такое:
Задана матрица размером 7 на 7. Вычислить количество тех элементов, которые больше всех имеющихся у него соседей и сформировать их них одномерный массив.

Я написал первую часть. Меня интересует такой вопрос: Какое условие нужно ввести, чтобы не было сравнения элемента с элементами которые находятся за границей матрицы,которых вообще не существует. Была идея рассматривать по частям матрицу, но это слишком длинно получится. Можно ли сделать этим способом с ограничением на сравнение элемента с соседями???

Java
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
class mas
{
    public static void main(String[] args){
    //переменные
    int i,j,n=7,p;
    //создание матрицы
    int[][] mattr=new int [7][7];
    //цикл
    for(i=0;i<n;i++){
    for(j=0;j<n;j++){
    //рандомное заполнение
    mattr[i][j]=(int)(Math.random() * n );
    //вывод в одну строку
    System.out.print(mattr[i][j]+"");
    }
    
    //переход на новую строку
    System.out.println();
    } 
    if(mattr[i][j]>mattr[i][j-1] && mattr[i][j]>mattr[i][j+1] && mattr[i][j]>mattr[i+1][j] && mattr[i][j]>mattr[i-1][j]);
    { 
                 
        p=mattr[i][j];
        int sum = 0;
        sum= sum + p;
        
        System.out.println("сумма элементов="+'p');
        
    }
    
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2012, 21:42
Ответы с готовыми решениями:

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

Сформировать одномерный массив из элементов матрицы ниже главной диагонали и которые больше элементов выше
Дана квадратная матрица A n x n. Сформировать одномерный массив, состоящий из тех элементов...

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

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

5
92 / 92 / 18
Регистрация: 06.01.2012
Сообщений: 394
26.03.2012, 00:08 2
Java
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
    public static void main(String[] args) {
        //переменные
        int n = 7, p;
        //создание матрицы
        int[][] mattr = new int[7][7];
        //цикл
        for (int a = 0; a < n; a++) {
            for (int b = 0; b < n; b++) {
                //рандомное заполнение
                mattr[a][b] = (int) (Math.random() * n);
                //вывод в одну строку
                System.out.print(mattr[a][b] + "");
            }
            //переход на новую строку
            System.out.println();
        }
        int sum = 0;
        for (int i = 1; i < mattr.length - 1; i++) {
            for (int j = 1; j < mattr.length - 1; j++) {
 
                if (mattr[i][j] > mattr[i][j - 1] && mattr[i][j] > mattr[i][j + 1] && mattr[i][j] > mattr[i + 1][j] && mattr[i][j] > mattr[i - 1][j]);
                {
                    p = mattr[i][j];
                    sum = sum + p;
                }
            }
        }
        System.out.println("сумма элементов=" + sum);
    }
1
1 / 1 / 0
Регистрация: 19.04.2011
Сообщений: 22
26.03.2012, 02:21  [ТС] 3
Я думаю, циклы
Java
1
2
3
4
5
6
7
8
int sum = 0;
        for (int i = 1; i < mattr.length - 1; i++) {
            for (int j = 1; j < mattr.length - 1; j++) {
 
                if (mattr[i][j] > mattr[i][j - 1] && mattr[i][j] > mattr[i][j + 1] && mattr[i][j] > mattr[i + 1][j] && mattr[i][j] > mattr[i - 1][j]);
                {
                    p = mattr[i][j];
                    sum = sum + p;
считают, сумму значений элементов внутреней матрицы 5х5... т.е рамку они не просчитывают [1][1],[1][7],[7][1],[7][7]
0
92 / 92 / 18
Регистрация: 06.01.2012
Сообщений: 394
26.03.2012, 02:26 4
Ну для элемента i=0, вам однозначно не удасться сравнить его с элементом i-1, Но если вам всё таки требуется учесть его , потому что он больше элемента i=1 этот код вам не поможет. Этот код считает только то, что окружено со всех сторон и не находится с краю матрицы.

Можно сделать
Java
1
2
try{}
catch(ArrayIndexOutOfBoundsException e) {}
Это отработает но это не рационально.

Я решал такую задачу следующим образом, мы сначало генерируем индекс, вокруг точки и если он находится в границах массива - обращаюсь к нему.
выглядит это так.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public void fillAroundPoint(final int i,final int j)
{
    final byte[][] dN ={{0,1},{-1,0},{0,-1},{1,0}};
    
    for (int k=0;k<dN.length;k++)
    {
        int dx=dN[k][0];
        int dy=dN[k][1];
        int x=0;
        int y=0;
        x=i+dx;
        y=j+dy;
        
        int[] coord={x,y};
        
        if (x>=0&&x<10&&y>=0&&y<10&&!around.contains(coord))
        {
            around.add(coord);
        }
    }
}
Теперь массив arround содержит все координаты, которые окружают точку. Можно пробежатся по нему и проверить все необходимые условия.
Другой способ, отдельно решать для матрицы 5х5, а потом уже по углам пройтись в другом цикле с другими условиями.
1
1 / 1 / 0
Регистрация: 19.04.2011
Сообщений: 22
26.03.2012, 03:31  [ТС] 5
Я вас понял. Спасибо большое за помощь
0
92 / 92 / 18
Регистрация: 06.01.2012
Сообщений: 394
26.03.2012, 03:36 6
Nibros, ноу проблем
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2012, 03:36

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

Вычислить количество элементов массива, которые больше своих соседей
В одномерном массиве, состоящем из n вещественных элементов: 1) вычислить количество элементов...

Вычислить количество отрицательных элементов в каждом столбце матрицы и сформировать из них новый массив
Помогите девушке решить индивидуальные задачи по С++ ........help me please!!!! 2. Массив...

Сформировать вектор М из элементов массива А, которые больше своих соседей
Дан массив А(n), n &lt;= 15, целого типа. Сформировать вектор М из элементов А, которые больше своих...


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

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

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