Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Macar
0 / 0 / 0
Регистрация: 01.08.2011
Сообщений: 9
#1

Найти наибольший элемент в заштрихованной части матрицы - C++

01.08.2011, 01:24. Просмотров 509. Ответов 7
Метки нет (Все метки)

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
#include <iostream>
using namespace std;
const int n= 5;
void main ()
{
int a[n][n] = {18, -45, 70, -28, 30, -66, 47, -39, -71, 0, 10, -11,
12, -13, 46, -65, 78, -95, 46, -55, 86, -63, -53, 45, 86};
int i, j, max ;
for (i=0; i<n; i++)
    {
        cout << "\n";
        for(j=0; j<n; j++)
        {   
            cout <<"a[" <<i<<"]["<<j<<"] = " <<a[i][j]<<"\t";   
        }
}
cout <<"\n";
max = a[0][0];
 
for (i=1; i<4; i++)// как я понял задание нужно найти наибольший елемент среди таких : a[1][0], a[2][0], a[2][1], a[3][0].
    {
        for (j=0; j<i; j++) //не знаю как втулить еще одно условие (i+j)<4 для исключения елементов с номерами а[3][1] и a[3][2]
        {
            if (a[i][j] > max)
                {
                max = a[i][j];
                }
        }
    }
 
cout << "Max element = " <<max << endl; // по идее должно выводить 10, а выводит 78 
}
Миниатюры
Найти наибольший элемент в заштрихованной части матрицы  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2011, 01:24     Найти наибольший элемент в заштрихованной части матрицы
Посмотрите здесь:

Найти наибольший и наименьший элемент заштрихованной части матрицы - C++
Помогите, пожалуйста. Если можно, с комментариями. Дано натуральное число n. Сформировать произвольную матрицу размерностью nxn....

Найти наименьший и наибольший элемент заштрихованной области заданной квадратной матрицы (составить блоксхему) - C++
Дано натурально число n. Сформировать произвольную матрицу размерностью n*n. Даны натуральные числа K,L.Найти наименьший и наибольший...

Найти количество ненулевых элементов, расположенных в заштрихованной части матрицы - C++
Дана действительная квадратная матрица порядка n. Найти количество неоулевых элементов, расположенных в заштрихованной части матрицы.

Найти наибольшее из значений элементов, расположенной в заштрихованной части матрицы - C++
Здравствуйте. Помогите разобраться с массивами. Задали написать программу как вообще это сделать? можете ли подробно объяснить прогу и...

Обработка массивов (Найти количество положительных элементов, расположенных в заштрихованной части матрицы) - C++
Программирование алгоритмов сортировок элементов массивов. Решить задачу в консольном режиме. Дана действительная квадратная матрица...

Найти минимальный элемент в заштрихованной области матрицы - C++
Преподаватель дала задание: Возможно, я что-то не пойму, но где заштрихованная область матрицы? Или что она вообще хочет и как?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
01.08.2011, 01:51     Найти наибольший элемент в заштрихованной части матрицы #2
Macar, у вас алгоритм не универсальный. Нужно универсализировать его, тогда и поймете в чем ошибка.
Overmind024
99 / 99 / 6
Регистрация: 10.09.2010
Сообщений: 267
01.08.2011, 02:50     Найти наибольший элемент в заштрихованной части матрицы #3
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
#include <iostream>
 
int main()
{
    const int n = 5;
    int ar[n][n] = {18, -45, 70, -28, 30, -66, 47, -39, -71, 0, 10, -11,
        12, -13, 46, -65, 78, -95, 46, -55, 86, -63, -53, 45, 86};
 
    
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            std::cout << ar[i][j] << " ";
        }
    
        std::cout << std::endl;
    }
    
    int max_value = INT_MIN;
    
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<std::min(i,n-i-1);j++) // или <=
        {
            if(ar[i][j] > max_value)
            {
                max_value = ar[i][j];
            }
        }
    }
    
    
    std::cout << "max_value = " << max_value << std::endl;
 
    std::cin.get();
    std::cin.get();
 
    return 0;
}
xAtom
914 / 739 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
01.08.2011, 05:04     Найти наибольший элемент в заштрихованной части матрицы #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
#include <iostream>
using namespace std;
 
int main(void) {
   const int N    = 5;
   int mat[N][N] = {
      {   3,  40,   2,  2,  1 },
      {   2,   5,   0,  4,  3 },
      {  -3,   5,   6,  6,  9 },
      { 230,  5,   5,  1,  7 },
      {   0,   3,   5, -5,  3 }
   };
 
   int maxn = mat[0][0];
   for(int c = 0; c <= N / 2; c++) {
         for(int r = c; r < N - c; r++) {
             if(mat[r][c] > maxn)
                 maxn = mat[r][c];
         }
   }
   cout << "max element: " << maxn << endl;
 
   cin.get();
   return 0;
}
Overmind024
99 / 99 / 6
Регистрация: 10.09.2010
Сообщений: 267
01.08.2011, 14:56     Найти наибольший элемент в заштрихованной части матрицы #5
Цитата Сообщение от xAtom Посмотреть сообщение
int maxn = mat[0][0];
Так не правильно. потому что автор считает что первый элемент матрицы не попадает в заштрихованную область.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.08.2011, 14:58     Найти наибольший элемент в заштрихованной части матрицы #6
Цитата Сообщение от Overmind024 Посмотреть сообщение
Так не правильно. потому что автор считает что первый элемент матрицы не попадает в заштрихованную область.
c чего вы это взяли?
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
01.08.2011, 15:29     Найти наибольший элемент в заштрихованной части матрицы #7
ышо вариантик
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>
using std::cout;
using std::cin;
using std::endl;
#include <time.h>
 
 
int main()
{
    srand( time ( 0 ) );
    int **matr;
    int N;
    cout << "Enter N: ";
    cin >> N;
    matr = new int *  [ N ];
    for ( int i = 0; i < N; i ++ )
    {
        matr[i] = new int [N];
        for ( int j = 0; j < N; j ++ )
            matr[i][j] = rand() % 50 - rand() % 25;
    }
 
    int max = matr[0][0];
    int tmp = 0;
    for ( int j = 0; j <= N/2; j ++, tmp++ )
        for ( int i = tmp; i < N - tmp; i ++ )
            if ( max < matr[i][j] ) max = matr[i][j];
 
 
    cout << endl << endl;
    for ( int i = 0; i < N; i ++ )
    {
        for ( int j = 0; j < N; j ++ )
            cout << matr[i][j] << "\t";
        cout << endl;
    }
    cout << "Max = " << max << endl;
    for ( int i = 0; i < N; i ++ )
              delete [] matr[i];
        delete [] matr;
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2011, 17:47     Найти наибольший элемент в заштрихованной части матрицы
Еще ссылки по теме:

Найти наибольший элемент матрицы - C++
Найти наибольший элемент матрицы и записать единицу в тот рядок и столбец на перекрёстке которых он содержится.Размерность матрицы вводить...

Найти наибольший элемент матрицы - C++
Помогите плиз. Найти наибольший элемент матрицы |1 7 6| |0 2 3| |9 5 0|

Найти наибольший элемент матрицы - C++
Дана матрица А(5,3) 1. Найти наибольший элемент матрицы 2. В строке, содержащей максимальный элемент матрицы, подсчитать сумму для...

Найти наибольший по модулю элемент матрицы - C++
Здравствуйте ! задана матрица А 0.30|1.20|-0.20 -0.10|-0.20|1.60 -1.50|-0.30|0.10 Как взять и...


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

Или воспользуйтесь поиском по форуму:
Macar
0 / 0 / 0
Регистрация: 01.08.2011
Сообщений: 9
05.08.2011, 17:47  [ТС]     Найти наибольший элемент в заштрихованной части матрицы #8
Цитата Сообщение от Macar Посмотреть сообщение
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
#include <iostream>
using namespace std;
const int n= 5;
void main ()
{
int a[n][n] = {18, -45, 70, -28, 30, -66, 47, -39, -71, 0, 10, -11,
12, -13, 46, -65, 78, -95, 46, -55, 86, -63, -53, 45, 86};
int i, j, max ;
for (i=0; i<n; i++)
    {
        cout << "\n";
        for(j=0; j<n; j++)
        {   
            cout <<"a[" <<i<<"]["<<j<<"] = " <<a[i][j]<<"\t";   
        }
}
cout <<"\n";
max = a[0][0];
 
for (i=1; i<4; i++)// как я понял задание нужно найти наибольший елемент среди таких : a[1][0], a[2][0], a[2][1], a[3][0].
    {
        for (j=0; j<i; j++) //не знаю как втулить еще одно условие (i+j)<4 для исключения елементов с номерами а[3][1] и a[3][2]
        {
            if (a[i][j] > max)
                {
                max = a[i][j];
                }
        }
    }
 
cout << "Max element = " <<max << endl; // по идее должно выводить 10, а выводит 78 
}
Всем спасибо за ответы, я исправил свою ошибку. Привожу код программы
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
#include <iostream>
using namespace std;
const int n= 5;
void main ()
{
int i, j, max, min = 0 ;
int a[n][n] = {18, -45, 70, -28, 30, 
                   -66, 47, -39, -71, 0,
                   10, -11, 12, -13, 46, 
                   -65, 78, -95, 46, -55, 
                   86, -63, -53, 45, 86};
for (i=0; i<n; i++)
    {
        cout << "\n";
        for(j=0; j<n; j++)
        {   
            cout <<"a[" <<i<<"]["<<j<<"] = " <<a[i][j]<<"\t";   
        }
}
cout <<"\n";
max = min;
for (i=0; i<n; i++)
    {
    for (j=0; i>j&&i+j<n-1; j++)
        {
            if (a[i][j] > max)
                {
                max = a[i][j];
                }
        }
    }
cout << "Max element = " <<max << endl; 
}
Yandex
Объявления
05.08.2011, 17:47     Найти наибольший элемент в заштрихованной части матрицы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru