Показать сообщение отдельно
Старый 24.12.2015, 11:53   #1 (permalink)
blazelott
Member
 
Регистрация: 03.02.2013
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Массив, сумма элементов соприкасающихся углами с максимальным элементом. Java

Есть задача.
Создать функцию, определяющую в целочисленном прямоугольном массиве matrixnm сумму всех элементов, соприкасающихся углами с его максимальным элементом.
Написал под неё программу, но считает она не правильно. Помогите пожалуйста разобраться.
Код:
        int n, m, vector_min, vector_max, max, s;
        jTextArea1.setText(null);
        vector_min = Integer.parseInt(jTextField1.getText());
        vector_max = Integer.parseInt(jTextField2.getText());
        n = Integer.parseInt(jTextField3.getText());
        m = Integer.parseInt(jTextField4.getText());

        if (vector_min > vector_max) {
            JOptionPane.showMessageDialog(null, "максимальное должно быть больше минимального");
            return;
        }

        int vector[][] = new int[n][m];
        Random Rand = new Random();
        jTextArea1.append("Массив:" + "\n");
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                vector[i][j] = Rand.nextInt(vector_max - vector_min + 1) + vector_min;
                jTextArea1.append(Integer.toString(vector[i][j]) + "  ");
            }
            jTextArea1.append("\n");
        }
        int jmax = 0,imax = 0,i,j;
        max = vector_min;
        for (i = 1; i < n; i++) {
            for (j = 1; j < m; j++) {
                if (max < vector[i][j]) {
                    max = vector[i][j];
                    imax = i;
                    jmax = j;
                }
            }
        }
            s = 0;
            //int imax, jmax;
            for (i = imax - 1; i < imax + 1; i++){
                for (j = jmax - 1; j < jmax + 1; j++){
                    if ((i > 0) && (i <= n) && (j > 0) && (j <= m) && !((i == imax) && (j == jmax))){
                    s = s + vector[i][j];
                }
                    
                }
                jTextArea1.append("max = " + Integer.toString(max));
            jTextArea1.append("sum = " + Integer.toString(s) + "\n");   
            }
blazelott вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070