Как найти минимальный элемент на побочной диагонали

wrasde125

0 / 0 / 0

Регистрация: 20.11.2017

Сообщений: 12

1

Найти минимальный элемент побочной диагонали матрицы

22.11.2017, 10:02. Показов 12617. Ответов 4

Метки матрица (Все метки)


Студворк — интернет-сервис помощи студентам

ЗАДАНИЕ: Задана целая матрица C [4][4]. Найти минимальный элемент её побочной диагонали

МОЯ ПРОГРАММА:

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
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
{
    srand(time(NULL)); 
    int n = 4; 
    int **a = new int* [n]; 
    for (int i = 0; i < n; i++)
    {
        a[i] = new int [n]; 
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            a[i][j] = rand() % 10; 
            cout << a[i][j] << " "; 
        }
        cout << endl;
    }
    for (int i = 0; i < n; i++)
    {
        delete[]a[i];
    }
    delete [] a; 
    system ("pause");
    return 0;
}

Матрицу я построил, всё работает.

Объясните пожалуйста, как найти минимальный элемент её побочной диагонали???
Какую строчку нужно добавить в код??? Никак не могу понять, как это правильно сделать.



0



San40ys

45 / 41 / 50

Регистрация: 04.04.2015

Сообщений: 80

22.11.2017, 16:04

2

C++
1
2
3
4
5
6
7
8
9
10
    int j = n - 1;
    int min = a[0][j];
    for(int i = 0; i < n; i++)
    {
        if(min > a[i][j])
        {
            min = a[i][j];
        }
        j--;
    }



0



wrasde125

0 / 0 / 0

Регистрация: 20.11.2017

Сообщений: 12

27.11.2017, 15:49

 [ТС]

3

San40ys, я вставил ваш элемент в код, компиляция проходит без ошибок, но программа всё-равно не выводит нужные элементы (только саму матрицу). Не могли бы вы подсказать, что я опять сделал неправильно???

КОД:

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
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
{
    srand(time(NULL)); 
    int n = 4; 
    int **a = new int* [n]; 
    for (int i = 0; i < n; i++)
    {
        a[i] = new int [n]; 
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            a[i][j] = rand() % 10; 
            cout << a[i][j] << " "; 
        }
        cout << endl;
    }
    for (int i = 0; i < n; i++)
    {
        delete[]a[i];
    }
    
    int j = n - 1;
    int min = a[0][j];
    for(int i = 0; i < n; i++)
    {
        if(min > a[i][j])
        {
            min = a[i][j];
        }
        j--;
    }
    
    delete [] a; 
    system ("pause");
    return 0;
}



0



San40ys

45 / 41 / 50

Регистрация: 04.04.2015

Сообщений: 80

27.11.2017, 17:15

4

wrasde125,
Память массива освобождаете до поиска элемента

Цитата
Сообщение от wrasde125
Посмотреть сообщение

for (int i = 0; i < n; i++)
* * {
* * * * delete[]a[i];
* * }

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
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
{
    srand(time(NULL));
    int n = 4;
    int **a = new int* [n];
    for (int i = 0; i < n; i++)
    {
        a[i] = new int [n];
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            a[i][j] = rand() % 10;
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
 
    int j = n - 1;
    int min = a[0][j];
    for(int i = 0; i < n; i++)
    {
        if(min > a[i][j])
        {
            min = a[i][j];
        }
        j--;
    }
    cout << "Minimum pobochnoi diagonali = " << min << endl;
 
    for (int count = 0; count < n; count++)
        delete [] a[count];
 
    system ("pause");
    return 0;
}



0



0 / 0 / 0

Регистрация: 20.11.2017

Сообщений: 12

27.11.2017, 17:20

 [ТС]

5

San40ys, Спасибо большое! Теперь более-менее разобрался в задаче.



0



Дана квадратная матрица размером nxn. Найти минимальный элемент среди элементов, расположенных ниже главной диагонали, найти максимальный элемент, среди элементов расположенных выше побочной диагонали. Найденные минимальный и максимальный элементы поменять местами и вывести их индексы.

// main_secondary_diagonal.cpp: определяет точку входа для консольного приложения.

#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;

int main(int argc, char* argv[])
{
    srand(time(NULL));
    int size_array; // размер квадратной матрицы
    setlocale(LC_ALL, "rus");

    cout << "Введите размер квадратной матрицы: ";
    cin >> 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 << setw(2) << arrayPtr[counter_rows][counter_columns] << "  "; // вывод на экран двумерного массива
        }
        cout << endl;
    }
    cout << endl;

    int min = arrayPtr[1][0], // минимальный елемент массива, ниже главной диагонали
        row_min = 1,          // номер строки минимального элемента
        column_min = 0;       // номер столбца минимального элемента

    // поиск минимального элемента в массиве, ниже главной диагонали
    for (int counter_rows = 1; counter_rows < size_array; counter_rows++)
    {
        for (int counter_columns = 0; counter_columns < counter_rows ; counter_columns++)
        {
            if ( arrayPtr[counter_rows][counter_columns] < min )
            {
                min = arrayPtr[counter_rows][counter_columns];
                row_min = counter_rows;
                column_min = counter_columns;
            }
        }
    }

    cout << "min" << "[" << (row_min + 1) << "][" << (column_min + 1) << "]"  << " = " << min << endl; 

    int max = arrayPtr[0][0], // максимальный элемнет массива, выше побочной диагонали
        row_max = 0,              // номер строки максимального элемента
        column_max = 0;           // номер столбца максимального элемента

    for (int counter_rows = 0; counter_rows < size_array - 1; counter_rows++)
    {
        for (int counter_columns = 0; counter_columns < (size_array - counter_rows - 1); counter_columns++)
        {
            if ( arrayPtr[counter_rows][counter_columns] > 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 << setw(2) << arrayPtr[counter_rows][counter_columns] << "  "; // вывод на экран двумерного массива
        }
        cout << endl;
    }
    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 < size_array; count++)
        delete []arrayPtr[count];

    system("pause");
    return 0;
}

Результат работы программы показан ниже:

Всем привет, помогите плиз с задачкой а то не могу сообразить)

Дан массив NxN. Напишите программу на Java которая находит минимальный элемент побочной диагонали, без учёта элемента пересечения главной и побочной диагонали.
Для примера приведена матрица 5х5. Побочная диагональ выделена жирным, минимальный элемент побочной диагонали – красным и подчёркнут:
1 2 3 4 5
5 7 9 2 1
0 9 1 8 7
6 3 6 6 6
99 100 -2 3 1

Мин элемент побочной диагонали найти смог
public class Diagonal {
public static void main(String[] args) {
int[][] array = {
{1, 2, 3, 4, 5},
{5, 7, 9, 2, 1},
{0, 9, 1, 8, 7},
{6, 3, 6, 6, 6},
{99, 100, -2, 3, 1}
};
int min1 = array[0][0];
for (int i = 0; i < array.length; i++) {
if (min1 > array[array.length — 1 — i][i]) {
min1 = array[array.length — 1 — i][i];
}
}
System.out.println(min1);
}
}
И ответ будет 1
Но, как из побочной вычесть основную, чтобы 1ка в центре не учитывалась, а выводился ответ 2?

program gdiagle  ;
uses crt;
var
i,j,max,iMax,jMax:integer;
a:array[1..5,1..10] of integer;
begin
for i:=1 to 5 do
begin
for j:=1 to 10 do
begin
a[i,j]:=random(50);
write (a[i,j],' ' )
end;
writeln
end;
writeln ('');
for i:=1 to 5 do
begin
for j:=1 to 10 do
begin
if j=i then
begin
if max < a[i, j] then
        begin
          max := a[i, j];
          iMax := i;
          jMax := j;
end;
end;
end;
end;
            writeln('Максимум: ', max);
            writeln(jmax);
            writeln(imax);
end.

Код к задаче: «Как найти минимальный элемент побочной диагонали?»

Смог создать и вывести двумерный массив. Как найти пока ума не приложу))

public class ProjectSample {
    public static void main(String[] args) {
        int[][] array = {
                {1, 2, 4, 5, 6},
                {1, 4, 5, 6, 7},
                {4, 5, 8, 8, 6},
                {5, 6, 3, 2, 1},
                {1, 5, 6, 7, 8}
        };
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array.length; j++) {
                System.out.print(array[i][j] + " ");
            }
            System.out.println()

Понравилась статья? Поделить с друзьями:
  • Как найти катет имея только гипотенузу
  • Как найти величину стороны равностороннего треугольника
  • Как составить диаграмму компонентов
  • Как найти eps формула
  • Как в запросе 1с найти максимальное значение