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

Главная диагональ матрицы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 43, средняя оценка - 4.72
Devastator1
4 / 4 / 0
Регистрация: 12.10.2010
Сообщений: 21
12.10.2010, 19:28     Главная диагональ матрицы #1
Добрый вечер! Есть пару задач, с которыми не могу справиться, помогите плиз...

Задача 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
33
34
35
36
37
38
39
40
41
42
43
#include "stdafx.h"
#include "math.h"
#include <iostream>
#include <iomanip>
#include "time.h"
using namespace std;
void main()
{
        setlocale(LC_CTYPE,"Rus");
        const int n=2;
        int mass[n][n];
        int m=0,t=1;
        srand((unsigned)time(NULL));
        for(int i=0;i<n;i++)
        {
                for(int j=0;j<n;j++)
                {
                        mass[i][j]=rand()%10;
                        cout << mass[i][j]<<"\t";
                       
                }
                 cout <<endl;
        }
        cout<<endl;
        for(int i=0;i<n;i++)
        {
                 
                  m=mass[i+1][i+1];
                   mass[i+1][i+1]=mass[n-i][n-i];
                   mass[n-i][n-i]=m;
        }
        for(int i=0;i<n;i++)
        {
                for(int j=0;j<n;j++)
                {
                        cout<<mass[i][j]<<"\t";
                }
                cout<<endl;
        }
 
        system("pause");
 
}
что я делаю не так?


Задача 2.
Задача 2
Дана целочисленная прямоугольная матрица. Найдите наибольший элемент среди нечетных столбцов этой матрицы.

Здесь хотелось бы понять алгоритм решения задачи...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
12.10.2010, 19:59     Главная диагональ матрицы #2
2.

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
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <ctime>
 
using std::cout;
using std::cin;
using std::endl;
 
 
int main ()
{
     srand((unsigned int)time(NULL));
      setlocale( LC_ALL,"Russian" );
     int size,max=0,i,j;
     int **arr;
     cout<<"Введите розмер: ";
     cin>>size;
     arr = new int*[size];
     cout<<"Сформированая матрица: ";
     cout<<endl;
     for(i=0; i<size; i++)
     {
          arr[i]= new int[size];
           for(j=0; j<size; j++)
           {
               arr[i][j]=rand()%30;
               cout<<arr[i][j]<<"   ";
           }
            cout<<endl;
     }
     max = arr[0][0];
     for(i=0; i<size; i++)
     {
          for(j=0; j<size; j++)
           {
               if((i+j%2)!=0)
                 {
                   if(arr[i][j]>max)
                   {
                       max = arr[i][j];
                   }
                 }
           }
            cout<<endl;
     }
    cout<<endl;
    cout<<"Max is "<<max;
    for(i=0;i<size;i++)
         delete arr[i];
         delete [] arr;
     system("PAUSE");
     return EXIT_SUCCESS;
}
Добавлено через 1 минуту
Постановка задачи: Дана целочисленная квадратная матрица. Измените порядок следования элементов главной диагонали на противоположный.
То есть, нада поменять местами елементы главной диагонали (первый и последний и т.д), я вас правильно понял?
Devastator1
4 / 4 / 0
Регистрация: 12.10.2010
Сообщений: 21
13.10.2010, 06:25  [ТС]     Главная диагональ матрицы #3
Цитата Сообщение от MILAN Посмотреть сообщение
То есть, нада поменять местами елементы главной диагонали (первый и последний и т.д), я вас правильно понял?
да, правильно.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.10.2010, 06:58     Главная диагональ матрицы #4
Цитата Сообщение от Devastator1 Посмотреть сообщение
m=0
можно не иницировать, так как использование начинается с присваивания, но это не ошибка.
Цитата Сообщение от Devastator1 Посмотреть сообщение
i+1][i+1
Убери смещение.
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
13.10.2010, 07:13     Главная диагональ матрицы #5
Возможно я перемудрил, но вроде так:
C++
1
2
3
4
5
6
7
 for(int i=0;i<n/2;i++)
        {
                 
              m=mass[i][i];
              mass[i][i]=mass[n-i-1][n-i-1];
              mass[n-i-1][n-i-1]=m;
        }
Devastator1
4 / 4 / 0
Регистрация: 12.10.2010
Сообщений: 21
13.10.2010, 07:32  [ТС]     Главная диагональ матрицы #6
Цитата Сообщение от dihlofos Посмотреть сообщение
Возможно я перемудрил, но вроде так:
C++
1
2
3
4
5
6
7
 for(int i=0;i<n/2;i++)
        {
                 
              m=mass[i][i];
              mass[i][i]=mass[n-i-1][n-i-1];
              mass[n-i-1][n-i-1]=m;
        }

Спасибо. Работает.

Добавлено через 10 минут
MILAN, почему-то макимальный элемент находит в любом столбце.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 max = arr[0][0];
         for(i=0; i<size; i++)
         {
              for(j=0; j<size; j++)
                   {
                           if((i+j%2)!=0)
                             {
                                   if(arr[i][j]>max)
                                   {
                                           max = arr[i][j];
                                   }
                             }
                   }
                    cout<<endl;
         }
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
13.10.2010, 07:48     Главная диагональ матрицы #7
Может условие нужно такое:
C++
1
if((j%2)!=0)
Как раз находит нечётный столбец.
Devastator1
4 / 4 / 0
Регистрация: 12.10.2010
Сообщений: 21
13.10.2010, 08:03  [ТС]     Главная диагональ матрицы #8
Цитата Сообщение от dihlofos Посмотреть сообщение
Может условие нужно такое:
C++
1
if((j%2)!=0)
Как раз находит нечётный столбец.
не находит, хотя по логике все правильно вроде.

результат:
matrix:
8 5 13
29 22 8
14 19 20

макимальный элемент: 22
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
13.10.2010, 08:10     Главная диагональ матрицы #9
Ну всё правильно, столбцы то с нуля нумеруются. Число нашлось в столбце номер 1, т.е. в нечётном) Если считать что левый столбец - первый, то так:
C++
1
if((j%2)==0)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2010, 08:16     Главная диагональ матрицы
Еще ссылки по теме:

C++ Дан двумерный массив А(4,4) в виде квадратной матрицы. Составьте программу, обнуляющую побочную диагональ матрицы, если в ней найдется хоть один отриц
Заменить главную диагональ матрицы C++
Упорядочить побочную диагональ матрицы по уменьшению C++

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

Или воспользуйтесь поиском по форуму:
Devastator1
4 / 4 / 0
Регистрация: 12.10.2010
Сообщений: 21
13.10.2010, 08:16  [ТС]     Главная диагональ матрицы #10
Цитата Сообщение от dihlofos Посмотреть сообщение
Ну всё правильно, столбцы то с нуля нумеруются. Число нашлось в столбце номер 1, т.е. в нечётном) Если считать что левый столбец - первый, то так:
C++
1
if((j%2)==0)

благодарю! все верно. то, что столбцы с 0 нумеруются не учел
Yandex
Объявления
13.10.2010, 08:16     Главная диагональ матрицы
Ответ Создать тему
Опции темы

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