Сглаживание вещественной матрицы, сумма элементов ниже главной диагонали
Соседями элемента a i-ое j-ое назовем в матрице элементы А к-ое l-ое с i-1 (k,l)!=(i,j).(не равно) Операция сглаживания дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы. Построить результат сглаживания вещественной матрицы размера 10×10. Найти сумму модулей элементов, расположенных ниже главной диагонали.
=k
Помогите разобраться до конца
вот исходный код
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
import java.io.*; class massiv2{ public static final int LINES=5; public static void main(String[] args) throws Exception { BufferedReader r=new BufferedReader(new InputStreamReader(System.in)); int n,k,l; System.out.print("n="); n=Integer.parseInt(r.readLine()); int p[][]=new int[LINES][LINES]; int pw[][]=new int[LINES][LINES]; for (int i=1;i=LINES;i++){ for (int j=1;j=LINES;j++){ p[i][j]=Integer.parseInt(r.readLine());}} float sum; for(int i;iLINES;i++) { for(int j=0; jLINES;j++) { sum+=p[i][j]; } } System.out.println(sum); int k,l; for(int i;iLINES;i++) { for(int j=0; jLINES;j++) {float ne=0; int b=0; for(k=i-1;ki+1;++k) for (l=j-1;l=j+1;++l) if(k!=l && k>=0 && kLINES && l>=0 && lLINES) {b++; ne+=p[LINES][LINES]; pw[i][j]=ne/b;}} for (int i=1;i=LINES;i++){ for (int j=1;j=LINES;j++){ System.out.print(pw[i][j]);} System.out.print("\n");}
Не уверен, что правильно, Не имею возможности откомпилировать и проверить. помогите добить программу,завтра сдать нужно
Найти сумму модулей элементов, расположенных ниже главной диагонали
мне нужно код из с++ переделать в Javа, пожалуйста помогите!
вот код.
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
int main() { srand((unsigned)time(0)); double sum=0; static double A[N][N],B[N][N]; for (int i=0;iN;i++) { for (int j=0;jN;j++) { A[i][j]=rand()%10-5; if (A[i][j]0) cout[i][j]<" "; else cout<" "[i][j]<" "; } cout; } coutfor (int i=0;iN;i++) } } for (int i=0;iN;i++) { for (int j=0;jN;j++) cout[i][j]<" "; cout ; ; } for(int i=1;iN;i++) for(int j=0;ji;j++) sum+=fabs(B[i][j]); cout<"\n\nSumma: "; getch(); }
Найти сумму элементов массива размерностью 4х4 расположенных выше и ниже главной диагонали. Java
я попробовал из предыдущего кода указать диагональ, но программа не видит. и она выходит не как.
Вычислить сумму элементов матрицы, расположенных выше главной и ниже побочной диагонали
Дана целочисленная квадратная матрица произвольного размера. Значения элемен-тов матрицы задаются.
Подсчитать сумму элементов матрицы ниже главной диагонали
В Матрице 5*5 подсчитать сумму элементов ниже главной диагонали Заранее спасибо 🙂
Найти сумму модулей элементов, расположенных ниже главной диагонали матрицы
Найти сумму модулей элементов расположенных ниже главной диагонали. Правильно ли я сделал? .
int i, j, sum = 0; for(i = 1; i n; ++i) for(j = 0; j i; ++j) sum += Math.abs(matr[i][j]);
что то я не могу найти сглаживание матриц..
я так понимаю это в папке src, документ matrix, а где именно не понятно, или я не там ищу?
Сообщение было отмечено Памирыч как решение
Решение
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
public void Smoothing() { final double buf[][] = Copy(matr); int i, j; for (i = 1; i rowCount - 1; ++i) for (j = 1; j columnCount - 1; ++j) matr[i][j] = Round((buf[i - 1][j - 1] + buf[i - 1][j] + buf[i - 1][j + 1] + buf[i][j - 1] + buf[i][j + 1] + buf[i + 1][j - 1] + buf[i + 1][j] + buf[i + 1][j + 1]) / 8, 1); for (i = 1; i rowCount - 1; ++i) { matr[i][0] = Round((buf[i - 1][0] + buf[i - 1][1] + buf[i][1] + buf[i + 1][0] + buf[i + 1][1]) / 5, 1); matr[i][columnCount - 1] = Round((buf[i - 1][columnCount - 2] + buf[i - 1][columnCount - 1] + buf[i][columnCount - 2] + buf[i + 1][columnCount - 2] + buf[i + 1][columnCount - 1]) / 5, 1); } for (i = 1; i columnCount - 1; ++i) { matr[0][i] = Round((buf[0][i - 1] + buf[1][i - 1] + buf[1][i] + buf[0][i + 1] + buf[1][i + 1]) / 5, 1); matr[rowCount - 1][i] = Round((buf[rowCount - 1][i - 1] + buf[rowCount - 2][i - 1] + buf[rowCount - 2][i] + buf[rowCount - 1][i + 1] + buf[rowCount - 2][i + 1]) / 5, 1); } matr[0][0] = Round((buf[0][1] + buf[1][0] + buf[1][1]) / 3, 1); matr[0][columnCount - 1] = Round((buf[0][columnCount - 2] + buf[1][columnCount - 2] + buf[1][columnCount - 1]) / 3, 1); matr[rowCount - 1][0] = Round((buf[rowCount - 2][0] + buf[rowCount - 2][1] + buf[rowCount - 1][1]) / 3, 1); matr[rowCount - 1][columnCount - 1] = Round((buf[rowCount - 2][columnCount - 2] + buf[rowCount - 2][columnCount - 1] + buf[rowCount - 1][columnCount - 2]) / 3, 1); }
Замена элементов выше побочной и ниже главной диагоналей
Сделал код, вывел все элементы всех диагоналей квадратной матрицы и все элементы над и под ними. Осталось хитрое задание — поменять элементы выше побочной и ниже главной диагоналей. Сами диагонали я менял и даже в цикле. А вот элементы — не выходит.
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
import static java.lang.System.out; public class ZamElem { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int n = 4; int[][]mas = new int[n][n]; for(int i = 0; imas.length; i++){ for(int j = 0; jmas[i].length; j++){ mas[i][j] = (int)(Math.random()*9); out.print(mas[i][j]+" "); } out.println(); } out.println(); out.println("Всё, что выше главной диагонали"); for(int i = 0; imas.length; i++){ for(int j = i+1; jmas[i].length; j++){ out.print(mas[i][j]+" "); } } out.println(); out.println(); out.println("Всё, что ниже главной диагонали"); for(int i = 0; imas.length; i++){ for(int j=0; ji; j++){ out.print(mas[i][j]+" "); } } out.println(); out.println(); out.println("Всё, что выше побочной диагонали"); for(int i = 0; imas.length; i++){ for(int j=0; jn-i-1; j++){ out.print(mas[i][j]+" "); } } out.println(); out.println(); out.println("Всё, что ниже побочной диагонали"); for(int i = 0; imas.length; i++){ for(int j=n-i; jmas.length; j++){ out.print(mas[i][j]+" "); } } out.println(); out.println(); out.println("Меняем местами элементы выше побочной и ниже главной диагонали"); for(int i = 1; imas.length; i++){ for(int j=0; jn-i-1; j++){ for(int z=0; zi; z++){//Вот тут цикл по элементам ниже главной. Не работает int temp = 0; //Замена тоже не работает как надо temp = mas[i][j]; mas[i][j] = mas[i][z]; mas[i][z] = temp; } } for(int i = 0; imas.length; i++){ for(int j = 0; jmas[i].length; j++){ out.print(mas[i][j]+" "); } out.println(); } } }
Вычислить сумму элементов матрицы, расположенных выше главной и ниже побочной диагонали
Дана целочисленная квадратная матрица произвольного размера. Значения элемен-тов матрицы задаются случайным образом. Разработать программу, позволяющую нахо-дить сумму элементов матрицы, расположенных выше главной диагонали и ниже побоч-ной диагонали.
Добавлено через 3 часа 3 минуты
Эта задача написанная на си.
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
#include #include #include #include #define N 100 int main() { int A[N][N],i=0,j=0,S1=0,S2=0,n; //A[N][N]-matriza, i,j-stroca i stolbez, S1-summa vyshe gl //S2-summa nyzhe pobochnoy cout«"vvedite razmer"«endl; cin»n; //zapolnenie massiva for(i=0;in;i++) { for(j=0;jn;j++) { A[i][j]=rand()%10; cout«A[i][j]«" "; } cout«endl; } //summa elementov vyshe glavnoy diagonaly for(i=0;in;i++) for(j=i+1;jn;j++) { S1+=A[i][j]; } //summa elementov nyzhe pobochnoy diagonaly for(i=0;in;i++) for(j=0;ji;j++) { S2+=A[i][j]; } cout«S1«endl; cout«S2; getch(); return 0; }
Найти сумму элементов массива размерностью 4х4 расположенных выше и ниже главной диагонали. Java
я попробовал из предыдущего кода указать диагональ, но программа не видит. и она выходит не как.
Вычислить среднее арифметическое элементов матрицы А(5,5), расположенных выше главной диагонали
Вычислить среднее арифметическое элементов матрицы А(5,5), расположенных выше главной диагонали.
Вычислить сумму элементов расположенных ниже главной диагонали, но выше побочной диагонали
Дана целочисленная квадратная матрица размера NxN. Вычислить сумму элементов расположенных ниже.
Найти сумму элементов матрицы, расположенных выше главной диагонали и ниже побочной диагонали
Никак не могу написать код. Есть небольшие наброски ниже, если кто сможет помочь — заранее.
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
import java.util.Random; import java.util.Scanner; //. public class ex { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("Введите размер квадратной матрицы: "); int num = in.nextInt(); int S1=0; int S2=0; //System.out.println(num); Random rand = new Random(); int [][] matrix = new int [num][num]; for(int i=0;inum;i++) { for(int j=0;jnum;j++) { matrix[i][j]=rand.nextInt(10)%10; // если могут быть отрицательные значения нужно удалить 10 в скобках } } //print matrix for(int i=0;inum;i++) { for(int j=0;jnum;j++) { System.out.print (matrix[i][j]+" "); } System.out.println(""); } //summa elementov vyshe glavnoy diagonaly for(int i=0;inum;i++) for(int j=i+1;jnum;j++) { S1+=matrix[i][j]; } //summa elementov nyzhe pobochnoy diagonaly for(int i=0;inum;i++) for(int j=0;ji;j++) { S2+=matrix[i][j]; } System.out.println ("summa elementov vyshe glavnoy diagonaly = "+S1); System.out.println ("summa elementov nyzhe pobochnoy diagonaly = "+S2); } }
Никакой ошибки нет. Даже Ideone.com показывает, что верно всё:
Успешно time: 0.09 memory: 380672 signal:0
Введите размер квадратной матрицы:
0 8 4 6 8
1 6 2 9 8
4 7 7 5 4
6 2 9 6 4
1 2 7 0 9
summa elementov vyshe glavnoy diagonaly = 58
summa elementov nyzhe pobochnoy diagonaly = 39
// собираем 2 суммы s1-верхний треугольник, s2-нижний for(int i=0; inum; i++){ for(int j=0; jnum; j++){ if (ij) s1+=matrix[i][j] //собираем первую сумму if ((num-i)>j) s2+=matrix[i][j] //собираем вторую сумму }}
Нашел формулы вычисления побочной диагонали, а так же всех чисел выше и ниже её. привожу код. Может кому надо будет:
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
//Формула побочной диагонали квадратной матрицы - i+j = n+1 //где i j - строка и столбец, n - порядок матрицы //делал через if //Но правильно только через циклы import java.util.Random; import java.util.Scanner; public class PobDiag { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); System.out.println("Введите размер квадратной матрицы: "); int num = in.nextInt(); //System.out.println(num); Random rand = new Random(); int [][] matrix = new int [num][num]; for(int i=0;inum;i++) { for(int j=0;jnum;j++) { matrix[i][j]=rand.nextInt(10)%10; // если могут быть отрицательные значения нужно удалить 10 в скобках } } //print matrix for(int i=0;inum;i++) { for(int j=0;jnum;j++) { System.out.print (matrix[i][j]+" "); } System.out.println(""); } System.out.println(); System.out.println("Выводим элементы ниже побочной диагонали"); //Выводим элементы ниже побочной диагонали for(int i=0;imatrix.length;i++){ for(int j=0;jmatrix.length;j++){ if((i+1)+(j+1)>num+1){ System.out.println(matrix[i][j]); } } } System.out.println(); System.out.println("Выводим элементы выше побочной диагонали"); //Выводим элементы выше побочной диагонали for(int i=0;imatrix.length;i++){ for(int j=0;jmatrix.length;j++){ if((i+1)+(j+1)num+1){ System.out.println(matrix[i][j]); } } } } }
Добавлено через 16 часов 25 минут
Кусочек кода для вывода побочной диагонали только с помощью одного цикла. Так правильнее.
System.out.println(); System.out.println("Выводим элементы побочной диагонали"); //Выводим элементы побочной диагонали for(int i=0;inum;i++){ int j = num-1-i; System.out.println(matrix[i][j]); }