Главные и побочные диагонали матрицы
Всем доброго времени суток
Очень интересует вопрос операций над главными и побочными диагоналями, пока что я плохо в этом разбираюсь. Ну, например, задание: матрица 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
static void Main(string[] args) { int[,] arr = new int[3, 3]; int[] diagonal = new int[3]; for (int i = 0; i arr.GetLength(0); i++) for (int j = 0; j arr.GetLength(1); j++) { Console.WriteLine("Введите элементы массива"); arr[i, j] = Convert.ToInt32(Console.ReadLine()); } int maxelem = arr[0, 0]; for (int i = 0; i arr.GetLength(0); i++) for (int j = 0; j arr.GetLength(1); j++) { if (arr[i, j] > maxelem) maxelem = arr[i, j]; } Console.WriteLine(maxelem); Console.WriteLine("______________"); for (int i = 0; i arr.GetLength(0); i++) { for (int j = 0; j arr.GetLength(1); j++) Console.Write(String.Format("", arr[i, j])); Console.WriteLine(); } int minelem = diagonal[0]; diagonal[0] = arr[0, 2]; diagonal[1] = arr[1, 1]; diagonal[2] = arr[2, 0]; for (int i = 0; i diagonal.Length; i++) if (diagonal[i] minelem) minelem = diagonal[i]; Console.WriteLine(minelem);
Квадратная матрица, главная и побочные диагонали
Дана квадратная матрица размером nxn . Найти минимальный элемент среди элементов, расположенных ниже главной диагонали, найти максимальный элемент, среди элементов расположенных выше побочной диагонали. Найденные минимальный и максимальный элементы поменять местами и вывести их индексы.
// main_secondary_diagonal.cpp: определяет точку входа для консольного приложения. #include «stdafx.h» #include #include using namespace std; int main(int argc, char* argv[]) < srand(time(NULL)); int size_array; // размер квадратной матрицы setlocale(LC_ALL, "rus"); cout > size_array; // динамическое создание двумерного массива int **arrayPtr = new int* [size_array]; for (int count = 0; count < size_array; count++) arrayPtr[count] = new int [size_array]; for (int counter_rows = 0; counter_rows < size_array; counter_rows++) < for (int counter_columns = 0; counter_columns < size_array; counter_columns++) < arrayPtr[counter_rows][counter_columns] = rand() % 100; // заполнение массива случайными числами cout cout cout > > cout max ) < max = arrayPtr[counter_rows][counter_columns]; row_max = counter_rows; column_max = counter_columns; >> > cout << "max" << "[" << (row_max + 1) << "][" << (column_max + 1) << "]" << " = " << max << endl; //////////////////перестановка элементов//////////////////////////////////////////////// arrayPtr[row_min][column_min] = max; arrayPtr[row_max][column_max] = min; //////////////////////////////////////////////////////////////////////////////////////// cout << "nМассив после перестановки максимального и минимального элементов:n"; for (int counter_rows = 0; counter_rows < size_array; counter_rows++) < for (int counter_columns = 0; counter_columns < size_array; counter_columns++) < cout cout cout << endl; cout << "min" << "[" << (row_max + 1) << "][" << (column_max + 1) << "]" << " = " << min << endl; cout << "max" << "[" << (row_min + 1) << "][" << (column_min + 1) << "]" << " = " << max << endl; // удаление двумерного динамического массива for (int count = 0; count
Результат работы программы показан ниже:
Введите размер квадратной матрицы: 5 85 0 69 71 20 31 1 7 12 10 93 19 8 18 18 1 35 41 98 41 45 36 73 22 66 min[4][1] = 1 max[3][1] = 93 Массив после перестановки максимального и минимального элементов: 85 0 69 71 20 31 1 7 12 10 1 19 8 18 18 93 35 41 98 41 45 36 73 22 66 min[3][1] = 1 max[4][1] = 93
Вывести элементы побочной диагонали матрицы
Условие
Дан двумерный массив размера N×N. Требуется вывести на экран все элементы его побочной диагонали, начиная с элемента, расположенного в правом верхнем углу.
Формат входных данных
С клавиатуры вводится натуральное число N (N≤500). Следующие N строк содержат по N целых чисел, разделенных пробелом — элементы массива. Все числа не превосходят 1000 по модулю.
Формат выходных данных
Требуется вывести через пробел N целых чисел — элементы побочной диагонали массива.
входные данные
3
1 2 3
4 5 6
7 8 9
выходные данные
3 5 7
Вывести на экран все элементы побочной диагонали матрицы
Дан двумерный массив размера N×N. Требуется вывести на экран все элементы его побочной диагонали.
Вывести элементы диагоналей, параллельных побочной диагонали матрицы
Доброго времени суток! Есть у меня задание: Два дня долбусь с выводом диагоналей матрицы. Все.
Обнулить элементы матрицы, лежащие одновременно выше главной диагонали и ниже побочной диагонали
Дана квадратная матрица порядка M. Обнулить элементы матрицы, лежащие одновременно выше главной.
Вычислить среднее арифметическое побочной диагонали матрицы, и заменить им элементы ниже главной диагонали
Вычислить среднее арифметическое элементов, находящихся на побочной диагонали двумерного массива и.
Сообщение было отмечено F- как решение
Решение
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
#include #include using namespace std; int main() { int N; cout "N= "; cin >> N; int **mas = new int *[N]; cout "Enter Matrix "endl; for (int i = 0; i N; ++i) { mas[i] = new int[N]; for (int j = 0; j N; ++j) { cin>>mas[i][j]; } } cout "Original Matrix " endl; for (int i = 0; i N; ++i) { for (int j = 0; j N; ++j) { cout mas[i][j] " "; } cout '\n'; } cout "diagonal "endl; for (int i = 0; i N; ++i) { cout mas[i][N-i-1] " "; } return 0; }
Максим 1994, я конечно не докапываюсь, но динамическую память нужно удалять 😉
Сообщение от макакий
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#include using namespace std; int main() { int a[500][500], N; cin >> N; for (int i = 0; i N; ++i) for (int j = 0; j N; ++j) cin >> a[i][j]; for (int i = 0; i N; ++i) cout [i][N-i-1] <" "; cout <"\n"; return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
такой код проходит один тест, а дальше дичь какая-то #include #include #include #include using namespace std; int main(){ int arr[1000][1000], n, count = 1; cin>>n; for(int i = 0 ; in; i++){ for(int j = 0; jn; j++){ arr[i][j] = count; count++; } } for(int i = 0; in; i++){ cout[ i][n-i-1] <" "; } return 0; }
там двумерный массив a[500][500]
Добавлено через 2 минуты
3
1 2 3
4 5 6
7 8 9
Correct
3 5 7
Output
1 1 1
Добавлено через 6 минут
Заменить элементы главной диагонали матрицы нулями и найти максимальный элемент ниже побочной диагонали
Есть пример для решения другой задачи(она находит суму всех элементов каждой строки и выводит.
Поместить элементы из первого массива выше и на побочной диагонали матрицы, а из второго массива ниже побочной
Сгенерировать две последовательности А и В из 15 и 10 случайных целых чисел соответственно.
Расположить элементы матрицы так, чтобы на побочной диагонали были бы максимальные элементы строк
Доброго времени суток. помогите пожалуйста с задачей последняя осталась) Расположить элементы.
Поменять местами элементы главной и побочной диагонали матрицы и найти столбцы, элементы которых убывают
С++ Задана матрица A(n,n). Поменять местами элементы главной и побочной диагонали. В.
Упорядочить элементы матрицы по побочной диагонали
Здравствуйте! Нужно написать программу, по упорядочиванию элементов матрицы по побочной диагонали.
Вывести на экран положительные элементы побочной диагонали
Вот задание: Даны две квадратные матрицы А и В. Вывести на экран положительные элементы побочной.
Вывести на экран все элементы побочной диагонали матрицы
Дан двумерный массив размера N×N. Требуется вывести на экран все элементы его побочной диагонали, начиная с элемента, расположенного в правом верхнем углу.
Формат входных данных
С клавиатуры вводится натуральное число N(N≤500). Следующие N строк содержат по N целых чисел, разделенных пробелом — элементы массива. Все числа не превосходят 1000 по модулю.
Формат выходных данных
Требуется вывести через пробел NN целых чисел — элементы побочной диагонали массива.
Примеры
входные данные
3
1 2 3
4 5 6
7 8 9
выходные данные
3 5 7
Вывести на экран в одну строку все элементы побочной диагонали квадратного массива
Вывести на экран (в одну строку): а) все элементы побочной диагонали квадратного массива, начиная.
Переставить все элементы k-ой строки матрицы (между собой) и все элементы побочной диагонали
Ребята, помогите пожалуйста решить задачу. переставить все элементы k-ой строки(между собой) и все.
Вывести на экран положительные элементы побочной диагонали
Вот задание: Даны две квадратные матрицы А и В. Вывести на экран положительные элементы побочной.
Вывести на экран все элементы побочной диагонали, начиная с элемента, расположенного в правом верхнем углу
Вывести на экран (в одну строку): а) все элементы побочной диагонали массива, начиная с элемента.
двумерный массив- побочные диагонали
Привет всем. Пишу на Си. Как в матрице(двумерный массив mass[M][N]) найти минимальный элемент, лежащий ниже побочной диагонали?
и как вообще отсеиваются элементы побочной диагонали(выше побочной диагонали, ниже побочной диагонали , и сабсно сами побочные диагонали)?
Добавлено через 1 час 0 минут
мне хотя бы примерно в словах. точно все расписывать не надо. хочу понять смысл как отсеиваются элементы (выше побочной диагонали, ниже побочной диагонали , и сабсно сами побочные диагонали)?
Дан двумерный массив, создать другой массив, строками которого будут диагонали первого массива
Дан двумерный массив , создать другой массив ,строками которого будут диагонали первого массива.
Двумерный массив (вывод главной диагонали наоборот)
помогите пожалуйста, нужно написать программу которая выводит главную диагональ наоборот.
Заполнить двумерный массив случайными числами, а диагонали — нулями
Заполнить двумерный массив случайными числами. И в массиве заполнить диагонали 0.
Двумерный массив: подсчитать произведение одной и второй диагонали
Данный двумерный массив чисел. Подсчитать произведение одной и второй диагонали массива чисел.
Если главная диагональ характеризуется i = j, то побочная будет так: i+j = N-1; где N — размер матрицы(матрица квадратная!), соответственно элементы выше побочной диагонали будут как i+j < N-1, ниже побочной диагонали i+j >N-1, ну и код для наглядности:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#include int main() { const int N = 5; int matrix[N][N] = {}; for (int i = 0; i N; i++) { for (int j = 0; j N; j++) { if (i+j == N-1) matrix[i][j] = 2; //побочная диагональ if (i+j N-1) matrix[i][j] = 1; //выше побочной if (i+j > N-1) matrix[i][j] = 3; //ниже побочной std::cout [ i][j] <" "; } std::cout :: endl; } }