Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
strag 93
1 / 1 / 2
Регистрация: 14.11.2010
Сообщений: 57
1

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

27.11.2010, 14:56. Просмотров 2846. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2010, 14:56
Ответы с готовыми решениями:

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

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

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

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

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

26
NikITKA123
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
strag 93
1 / 1 / 2
Регистрация: 14.11.2010
Сообщений: 57
27.11.2010, 15:31  [ТС] 3
я прогу пишу на Борланде С++ , так что мне
C++
1
usingstd
ненада
0
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
27.11.2010, 15:32 4
Цитата Сообщение от strag 93 Посмотреть сообщение
поменять эл-нты относительно главной диагонали.
написать код транспонирования матрицы??? (задача вроде распространенная, надо было в поиске написать)
0
kazak
3058 / 2379 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
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
strag 93
1 / 1 / 2
Регистрация: 14.11.2010
Сообщений: 57
27.11.2010, 16:01  [ТС] 6
Цитата Сообщение от kazak Посмотреть сообщение
#include <iomanip.h>
что это за подключение??? обьясните пожалуста
0
kazak
3058 / 2379 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
27.11.2010, 16:26 7
Цитата Сообщение от strag 93 Посмотреть сообщение
что это за подключение??? обьясните пожалуста
Форматированный ввод-вывод.
0
Vladimir.
158 / 158 / 48
Регистрация: 24.11.2009
Сообщений: 375
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
asics
Freelance
Эксперт С++
2854 / 1789 / 355
Регистрация: 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
MILAN
888 / 782 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
10.12.2010, 01:20 10
asics, delete еще пока никто не отменял!!!
0
Crudelis
Шаровик затейник
681 / 430 / 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
kazak
3058 / 2379 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
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
valeriikozlov
Эксперт С++
4686 / 2512 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
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
strag 93
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
jambas92
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
16.12.2010, 17:02 15
strag 93, не мог бы ты выложить примерный тест. а то не понятно что требуется... двумерный массив самому элеметами забивать, а после поменять значения относительно главной диоганали???
0
vx5
187 / 171 / 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
strag 93
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
vx5
187 / 171 / 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
jambas92
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
vx5
187 / 171 / 12
Регистрация: 04.09.2010
Сообщений: 656
16.12.2010, 17:17 20
может поделитесь текстом ошибки ?
1
16.12.2010, 17:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2010, 17:17

Заданный двумерный массив N x N. Вывести на экран элементы главной диагонали массива
14. Помогите с написанием. Заданный двумерный массив N x N. Вывести на экран...

Дан двумерный массив размера N×N, заполненный целыми числами. Вывести все числа главной и побочной диагонали
Дан двумерный массив размера N×N, заполненный целыми числами. Вывести все числа...

Ввести в память машины двумерный массив A(N,M). найти наибольший и наименьший элементы среди элементов главной диагонали.
помогите пожалуйста решить задачу!!!!!завтра зачет(((( 1.Ввести в память...


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

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

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