1 / 1 / 2
Регистрация: 14.11.2010
Сообщений: 57
1

Дан двумерный массив, поменять элементы относительно главной диагонали

27.11.2010, 14:56. Показов 7413. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан, Двумерный масив Н*М(3*3) , поменять эл-нты относительно главной диагонали.


C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream.h>
const int n=3,m=3;
void main()
{
int a[n][m];
cout<<"Введите масив:"<<n<<"*"<<m<<endl;
for (int i=0;i<n;i++)
{
  for(int j=0;j<m;j++)
  cin>>a[i][j];
  cout<<endl;
}}

Вот начал , делать , но тут проблемка у меня все числа идут в 1 столбец , а мне нада задать мартицей.

И как поменять , главную диагональ ???? использовать переменную ?

 Комментарий модератора 
Дублирование тем запрещено правилами форума (п.3.4).
Все ваши одинаковые темы объеденены в одну. Любые несостыковки в связи с перемещением - на Вашей совести.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2010, 14:56
Ответы с готовыми решениями:

Функции: поменять элементы относительно главной диагонали
Дан двухмерный массив, зделать в виде функции , и поменять элементы относительно главной диагонали....

Является ли двумерный массив симметричным относительно главной диагонали
Проверьте, является ли двумерный массив симметричным относительно главной диагонали. Главная...

Поменять местами элементы матрицы, симметричные относительно главной диагонали
Задано двумерный массив.Составить программу которая меняет местами все элементы, симметричные...

Поменять местами элементы матрицы, симметричные относительно главной диагонали
Очень поможете)

26
19 / 18 / 5
Регистрация: 28.04.2010
Сообщений: 86
27.11.2010, 15:25 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
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
    setlocale(0, "Rus");
    const int n = 3, m = 3;
    int a[n][m], i, j;
    cout << "Введите масив:" << n << "*" << m << endl;
    for (i = 0; i < n; i++)
    {
        for(j = 0; j < m; j++)
        cin >> a[i][j];
        cout << endl;
    }
    cout << "Ваша матрица:\n";
    for(i = 0; i < n; i++){
        cout << endl;
        for(j = 0; j < m; j++)
            cout << setw(3) << a[i][j];
    }
    cout << endl;
}
Все у вас правильно было. вот чуть изменено. только вы забыли написать
C++
1
using namespace std
и подключить переход на русский язык
C++
1
setlocale(0, "Rus");
Добавлено через 52 секунды
про диагональ не знаю
1
1 / 1 / 2
Регистрация: 14.11.2010
Сообщений: 57
27.11.2010, 15:31  [ТС] 3
я прогу пишу на Борланде С++ , так что мне
C++
1
usingstd
ненада
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
27.11.2010, 15:32 4
Цитата Сообщение от strag 93 Посмотреть сообщение
поменять эл-нты относительно главной диагонали.
написать код транспонирования матрицы??? (задача вроде распространенная, надо было в поиске написать)
0
3507 / 2669 / 329
Регистрация: 11.03.2009
Сообщений: 6,104
27.11.2010, 15:39 5
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
#include <iostream.h>
#include <iomanip.h>
 
int main()
{
   const int n = 3, m = 3;
   int a[n][m], tmp, i, j;
 
   cout << "Введите масив: " << n << " * "<< m << endl;
   for (i = 0; i < n; i++)
   {
      for (j = 0; j < m; j++)
      {
         cout << "a[" << i << "][" << j << "] = ";
         cin >> a[i][j];
      }
   }
 
   cout << "Исходная матрица:\n";
    for(i = 0; i < n; i++)
   {
       cout << endl;
        for(j = 0; j < m; j++)
           cout << setw(3) << a[i][j];
    }
 
   for (i = 0; i < n-1; i++)
   {
      for (j = i+1; j < m; j++)
      {
         tmp = a[i][j];
         a[i][j] = a[j][i];
         a[j][i] = tmp;
      }
   }
 
   cout << "Полученная матрица:\n";
    for(i = 0; i < n; i++)
   {
       cout << endl;
        for(j = 0; j < m; j++)
           cout << setw(3) << a[i][j];
    }
   
   return 0;
}
1
1 / 1 / 2
Регистрация: 14.11.2010
Сообщений: 57
27.11.2010, 16:01  [ТС] 6
Цитата Сообщение от kazak Посмотреть сообщение
#include <iomanip.h>
что это за подключение??? обьясните пожалуста
0
3507 / 2669 / 329
Регистрация: 11.03.2009
Сообщений: 6,104
27.11.2010, 16:26 7
Цитата Сообщение от strag 93 Посмотреть сообщение
что это за подключение??? обьясните пожалуста
Форматированный ввод-вывод.
0
377 / 228 / 79
Регистрация: 24.11.2009
Сообщений: 695
09.12.2010, 22:07 8
дан двумерный массив. Поменять элементы относительно главной диагонали.

Например: Массив в виде матрицы
1 2 3
5 7 9
8 7 6

нада поменять числа 1,7,6 по диагонали.
неа =)

нужно обменять 5 и 2, 8 и 3, 7 и 9 - тогда обмен будет относительно главной диагонали.

по сути Вам нужно спускаться от элемента (0,0) к элементу (3-1,3-1) обменивая значения элементов строки и столбца находящихся соответсвенно правее и ниже текущего элемента главной диагонали
0
Freelance
Эксперт С++
2890 / 1825 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
09.12.2010, 22:11 9
Цитата Сообщение от strag 93 Посмотреть сообщение
дан двумерный массив. Поменять элементы относительно главной диагонали.
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>
 
using namespace std;
 
int main ()
{
    int **mas, n, i,j;
 
    
    cout<<"Enter size of rows and columns : "<< endl;
    cin>>n;
    mas=new int*[n];
 
    for(i=0; i<n; i++)
       mas[i]=new int[n];
    cout<<" Enter matrix: "<< endl;
    for(i=0; i<n; i++)
       for(j=0; j<n; j++)
       {
          cout<<"["<<i<<"]["<<j<<"]= ";
          cin>>mas[i][j];
       }
        cout<<"Matrix befor"<<endl;
    for(i=0; i<n; i++)
        {
       for(j=0; j<n; j++)
          cout<<mas[i][j]<<" ";
          cout<<endl;
        }
        cout<<"Matrix after"<<endl;
    for(i=0; i<n; i++)
        {
       for(j=0; j<n; j++)
                   cout<<mas[j][i]<<" ";
           cout<<endl;
        }
 
        cout<<endl;
    return 0;
}
0
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
10.12.2010, 01:20 10
asics, delete еще пока никто не отменял!!!
0
Шаровик затейник
696 / 445 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
10.12.2010, 01:23 11
Цитата Сообщение от asics Посмотреть сообщение
cout<<"Matrix befor"<<endl;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
cout<<mas[i][j]<<" ";
cout<<endl;
}
cout<<"Matrix after"<<endl;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
cout<<mas[j][i]<<" ";
cout<<endl;
}
сдается мне что у вас два кода идентичны
0
3507 / 2669 / 329
Регистрация: 11.03.2009
Сообщений: 6,104
10.12.2010, 01:40 12
C++
1
2
3
for (int i= 1; i < n; i++)
   for (int j = 0; j < i; j++)
      swap(a[i][j], a[j][i]);
0
Эксперт С++
4726 / 2547 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
15.12.2010, 20:18 13
Вот Вам вариант без ошибок:
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
#include <iostream.h>
const int n=3,m=3;
void InArray ( float [n][m]);
void Change  ( float [n][m]);
void PrintArray ( float [n][m]);
void main()
{
 float a[n][m];
 InArray (a);
 Change (a);
 PrintArray (a);
 }
void InArray (float a[n][m])
 {
 
   cout<<"ведите масив "<<n<<"*"<<m<<endl;
   for (int i=0;i<n;i++)
{
  for(int j=0;j<m;j++)
  cin>>a[i][j];
  cout<<endl;
}
  }
void Change ( float a[n][m])
 {
     cout<<"Матрица A: \n ";
 for(int i=0;i<n;i++)
  {
    cout<<endl;
    for(int j=0;j<m;j++)
    cout<<"  "<<a[i][j];
        }
        cout<<"\nМатрица B: "<<endl;
    for(i=0; i<n; i++)
        {
        cout<<endl;
       for(int j=0; j<n; j++)
                   cout<<" "<<a[j][i];         
}
       }
      void PrintArray ( float a[n][m])
 {
   cout<<"\nчтото: \n";
    for (int i=0;i<n;i++)
     {
      for ( int j=0;j<m;j++)
       cout<<a[i][j]<<" ";
       cout<<endl;
       }
     }
Но скорее всего он не окончательный. В функции Change () у Вас нет обмена элементов массива относительно главной диагонали (все элементы остаются на своих местах). Просто вывод на экран идет так, как будто элементы поменяли относительно главно диагонали.
Ну а в конце идет вывод элементов массива (и порядок следования у этих элементов такой же как и у начального массива).
0
1 / 1 / 2
Регистрация: 14.11.2010
Сообщений: 57
16.12.2010, 16:51  [ТС] 14
Дан двумерный масив Н*М, поменять элементы относительно главной диагонали , сделать в виде функции.

Вот я написал , но у меня 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
#include <iostream.h>
const int n=3,m=3;
void InArray ( float [n][m]);
void Change  ( float [n][m]);
void PrintArray ( float [n][m]);
void main()
{
 float a[n][m];
 InArray (a);
 Change (a);
 PrintArray (a);
 }
void InArray (float [n][m])
 {
 
   cout<<"ведите масив "<<n<<"*"<<m<<endl;
   for (int i=0;i<n;i++)
{
  for(int j=0;j<m;j++)
  cin>>a[i][j];
  cout<<endl;
}
  }
   {
     cout<<"Матрица A: \n ";
 for(i=0;i<n;i++)
  {
    cout<<endl;
    for(int j=0;j<m;j++)
    cout<<"  "<<a[i][j];
        }
         }
void Change ( float a[i][j])
 {  
for (i=0; i<n; i++)
        {
        cout<<endl;
       for(int j=0; j<n; j++)
       
}
       }
      void PrintArray ( float a[n][m])
 {
   cout<<"Матрица B: \n";
    for (int i=0;i<n;i++)
     {
      for ( int j=0;j<n;j++)
       cout<<a[i][j]<<" ";
       cout<<endl;
       }
     }
0
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
16.12.2010, 17:02 15
strag 93, не мог бы ты выложить примерный тест. а то не понятно что требуется... двумерный массив самому элеметами забивать, а после поменять значения относительно главной диоганали???
0
191 / 175 / 12
Регистрация: 04.09.2010
Сообщений: 656
16.12.2010, 17:08 16
Цитата Сообщение от strag 93 Посмотреть сообщение
Дан двумерный масив Н*М, поменять элементы относительно главной диагонали , сделать в виде функции.

Вот я написал , но у меня 2 ошибки. Проверьте пожалуста.
C++
1
2
3
void InArray ( float [n][m]);
void Change  ( float [n][m]);
void PrintArray ( float [n][m]);
где у вас имя переменной в объявлении функции ? в определениях тоже нету
попробуйте заменить их на:
C++
1
2
3
void InArray ( float a[n][m]);
void Change  ( float a[n][m]);
void PrintArray ( float a[n][m]);
в определениях тоже самое
0
1 / 1 / 2
Регистрация: 14.11.2010
Сообщений: 57
16.12.2010, 17:12  [ТС] 17
Вот например матрица:
1 2 3
4 5 6
7 8 9

из неё сделать такую:
1 4 7
2 5 8
3 6 9

и сделать это всё в функции. Прогу написал , но есть 2 ошибки ,А как их устранить незнаю

Добавлено через 2 минуты
Поставил , но всё равно , есть 1 ошибка.
0
191 / 175 / 12
Регистрация: 04.09.2010
Сообщений: 656
16.12.2010, 17:16 18
C++
1
2
3
4
5
6
7
void main()
{
 float a[n][m];
 InArray (a);
 Change (a);
 PrintArray (a);
 }
и такой вариант программы у вас должным обращом работать не будет. либо передавайте переменную по ссылке, либо в маине пишите
C++
1
2
a=InArray(a);
a=Change (a);
Добавлено через 2 минуты
в 13-ой строке исправили ?
1
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
16.12.2010, 17:17 19
Все сделал!!! только чтобы была майн диоганаль нужна не НхМ матрица, а НхН матрица!!!

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
#include <iostream>
 
using namespace std;
 
int main()
{
    int mas[100][100];
    int a[100];
    int b[100];
    int n;
    int yaya=1;
    int k=0, _k_=0;
 
    cin >> n;
 
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            cin >> mas[i][j];
        }
    }
 
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            if (i>j)
            {
                swap(mas[i][j], mas[j][i]);
            }
        }
    }
 
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            cout << mas[i][j] << " ";
        }
        cout << endl;
    }
 
    return 0;
}
введите такой тест:
ввод: 4
1 2 3
4 5 6
7 8 9
1
191 / 175 / 12
Регистрация: 04.09.2010
Сообщений: 656
16.12.2010, 17:17 20
может поделитесь текстом ошибки ?
1
16.12.2010, 17:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2010, 17:17
Помогаю со студенческими работами здесь

Поменять местами элементы матрицы, симметричные относительно главной диагонали
Дан Двумерный массив размером n × n. Составить программу, которая меняет местами все элементы,...

Поменять местами элементы квадратной матрицы относительно главной диагонали
Создать массив A(nxn). Поменять местами элементы симметрично главной диагонали.

Проверить, является ли двумерный массив симметричным относительно главной диагонали
#include &lt;iostream&gt; using namespace std; //проверка симметричности матрицы int main() { int n;...

Проверить является ли двумерный массив симметричным относительно главной диагонали
Задача №5 Дано число n, не превосходящее 10, и массив размером n × n. Проверьте, является ли...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru