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

задачка - C++

Восстановить пароль Регистрация
 
Macar
0 / 0 / 0
Регистрация: 01.08.2011
Сообщений: 9
01.08.2011, 01:24     задачка #1
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++
задачка c++ C++
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
 Аватар для xAtom
910 / 735 / 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
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.08.2011, 14:58     задачка #6
Цитата Сообщение от Overmind024 Посмотреть сообщение
Так не правильно. потому что автор считает что первый элемент матрицы не попадает в заштрихованную область.
c чего вы это взяли?
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 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++

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

Или воспользуйтесь поиском по форуму:
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     задачка
Ответ Создать тему
Опции темы

Текущее время: 00:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru