0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 10
1

Заполнить матрицу 9x9 случайными числами. Отобразить матрицу симметрично относительно главной диагонали

14.03.2010, 22:03. Показов 13763. Ответов 21
Метки нет (Все метки)

Заполнить матрицу случайными числами. Отобразить матрицу симметрично относительно главной диагонали
Изображения
 
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2010, 22:03
Ответы с готовыми решениями:

Заполнить матрицу случайными числами. Отобразить мат-рицу симметрично относительно главной диагонали.
Помогите пожалуйста!Очень нужно! Как написать программу на DEV C++ ? Вот задание: Заполнить...

Заполнить матрицу случайными числами. Отобразить симметрично относительно вертикальной оси
Заполнить матрицу случайными числами. Отобразить симметрично относительно вертикальной оси секторы...

Отобразить матрицу симметрично относительно главной диагонали
По условию необходимо заполнить матрицу случайными числами. Отобразить матрицу симметрично...

Массивы. Отобразить матрицу симметрично относительно главной диагонали
2)Инициализацию матрицы, ее вывод на экран и «основное действие» программы реализовать в виде...

21
119 / 68 / 17
Регистрация: 17.11.2009
Сообщений: 261
14.03.2010, 23:40 2
Пиши свой код, что не получается поможем.
0
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 10
15.03.2010, 00:06  [ТС] 3
я первокурсник политеха и пока не очень розбираюсь((( помогите плз
0
60 / 22 / 2
Регистрация: 13.03.2010
Сообщений: 65
15.03.2010, 00:15 4
Заполнить матрицу случайными числами.
C
1
2
3
4
5
6
7
8
9
10
...
#include <stdlib.h>
...
int i;
int j;
int matrix[9][9];
for (i = 0; i < 9; i++)
    for (j = 0; j < 9; j++)
        matrix[9][9] = rand();
...
Отобразить матрицу симметрично относительно главной диагонали.
Отобразить матрицу легко - нужно всего лишь вывести все элементы в стандартный поток вывода:
C
1
2
3
4
5
6
7
8
9
10
...
#include <stdio.h>
...
for (i = 0; i < 9; i++)
{
    for (j = 0; j < 9; j++)
        printf("%d\t",matrix[9][9]);
    printf("\n");
}
...
Но я не понимаю, что значит отобразить симметрично (картинка нисколько не поясняет сути задания).

Добавлено через 11 секунд
Заполнить матрицу случайными числами.
C
1
2
3
4
5
6
7
8
9
10
...
#include <stdlib.h>
...
int i;
int j;
int matrix[9][9];
for (i = 0; i < 9; i++)
    for (j = 0; j < 9; j++)
        matrix[9][9] = rand();
...
Отобразить матрицу симметрично относительно главной диагонали.
Отобразить матрицу легко - нужно всего лишь вывести все элементы в стандартный поток вывода:
C
1
2
3
4
5
6
7
8
9
10
...
#include <stdio.h>
...
for (i = 0; i < 9; i++)
{
    for (j = 0; j < 9; j++)
        printf("%d\t",matrix[9][9]);
    printf("\n");
}
...
Но я не понимаю, что значит отобразить симметрично (картинка нисколько не поясняет сути задания).
0
5 / 5 / 3
Регистрация: 09.12.2009
Сообщений: 65
15.03.2010, 08:11 5
[QUOTE=kirjushyk;599574]
C
1
2
3
4
5
6
7
8
9
10
...
#include <stdlib.h>
...
int i;
int j;
int matrix[9][9];
for (i = 0; i < 9; i++)
    for (j = 0; j < 9; j++)
        matrix[9][9] = rand();
...

может быть matrix[i][j] = rand()?
0
1 / 1 / 0
Регистрация: 05.03.2010
Сообщений: 8
15.03.2010, 08:27 6
#include <stdlib.h>
...
int i;
int j;
int matrix[9][9];
for (i = 0; i < 9; i++)
for (j = 0; j < 9; j++)
matrix[9][9] = rand();
...
Sergey_O прав:

Цитата Сообщение от Sergey_O Посмотреть сообщение
может быть matrix[i][j] = rand()?
К стати можешь сразу вывести в том же цикле!
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdlib.h>
...
int i;
int j;
int matrix[9][9];
for (i = 0; i < 9; i++)
{    for (j = 0; j < 9; j++)
     {   matrix[i][j] = rand()%40;
          printf("%d\t",matrix[i][j]);
      }
      printf("\n");
}
%40 означает что рандомы будут от 0 до39 если требуется
К стати идею с табулятором не проверяла, я использую форматированный выводrintf("%5d",matrix[i][j]);
0
119 / 68 / 17
Регистрация: 17.11.2009
Сообщений: 261
15.03.2010, 08:28 7
Цитата Сообщение от kirjushyk Посмотреть сообщение
Но я не понимаю, что значит отобразить симметрично (картинка нисколько не поясняет сути задания).
Отобразить симметрично - это значит транспонировать ее.

Программа на C++

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
#include <iostream>
#include <iomanip>
#include <time.h>
using namespace std;
 
int main()
{
  srand(time(NULL));
  const int strok=9; //количество строк
  const int stolb=9; //количество столбцов
  int a[strok][stolb]={0};
  //заполняем и выыводим массив}
  cout << "Ishodnaja matrix:" << endl;
  for(int i=0; i<strok;i++)
  {
    for(int j=0; j<stolb;j++)
    {
      a[i][j]=1+rand()%9;
      cout << setw(2) << a[i][j]<< ' ';
    }
    cout << endl;
  }
  //транспонируем матрицу
  cout << "Trnsponirovannaja matrix:" << endl;
  for(int i=0; i<stolb; i++)
  {
    for(int j=0;j<strok; j++)
    {
      cout << setw(2) << a[j][i] << ' ';
    }
    cout << endl;
  }
  return 0;
}
0
1 / 1 / 0
Регистрация: 05.03.2010
Сообщений: 8
15.03.2010, 08:36 8
Чето я не то написала О_о
Вобщем код писать не буду но идея такова:если i<=j заполняешь else matrix[i][j]=matrix[j][i]
Вобщем как-то так
0
60 / 22 / 2
Регистрация: 13.03.2010
Сообщений: 65
15.03.2010, 18:44 9
Да, действительно, я по ошибке вместо i и j указал 9 =(
0
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 10
17.03.2010, 07:49  [ТС] 10
Цитата Сообщение от UKOL Посмотреть сообщение
Отобразить симметрично - это значит транспонировать ее.

Программа на C++

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
#include <iostream>
#include <iomanip>
#include <time.h>
using namespace std;
 
int main()
{
  srand(time(NULL));
  const int strok=9; //количество строк
  const int stolb=9; //количество столбцов
  int a[strok][stolb]={0};
  //заполняем и выыводим массив}
  cout << "Ishodnaja matrix:" << endl;
  for(int i=0; i<strok;i++)
  {
    for(int j=0; j<stolb;j++)
    {
      a[i][j]=1+rand()%9;
      cout << setw(2) << a[i][j]<< ' ';
    }
    cout << endl;
  }
  //транспонируем матрицу
  cout << "Trnsponirovannaja matrix:" << endl;
  for(int i=0; i<stolb; i++)
  {
    for(int j=0;j<strok; j++)
    {
      cout << setw(2) << a[j][i] << ' ';
    }
    cout << endl;
  }
  return 0;
}
а можеш на С написать транспортирование матрицы??????
плз оч надо !!!!!!!!!!!!!!
0
119 / 68 / 17
Регистрация: 17.11.2009
Сообщений: 261
17.03.2010, 13:29 11
Чет я с Си не очень дружу... Может типа того, но не уверен, знающие люди поправьте!

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
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <time.h>
using namespace std;
 
int main()
{
  srand(time(NULL));
  const int strok=9; //количество строк
  const int stolb=9; //количество столбцов
  int a[strok][stolb]={0};
  //заполняем и выыводим массив}
   printf("Ishodnaja matrix:\n\n");
  for(int i=0; i<strok;i++)
  {
    for(int j=0; j<stolb;j++)
        {
      a[i][j]=1+rand()%9;
      printf("%d\t",a[i][j]);
        }
   printf("\n");
  }
  //транспонируем матрицу
  printf("\nTrnsponirovannaja matrix:\n\n");
  for(int i=0; i<stolb; i++)
  {
    for(int j=0;j<strok; j++)
        {
      printf("%d\t",a[j][i]);
        }
    printf("\n");
  }
  return 0;
}
1
Эксперт С++
5036 / 2615 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
17.03.2010, 13:38 12
Транспонирование:
C
1
2
3
4
5
6
7
8
int i = 0, j = 0, t = 0;
for(i = 0; i < size; ++i)
    for(j = 0; j < size; ++j)
    {
        t = matr[i][j];
        matr[i][j] = matr[j][i];
        matr[j][i] = t;
    }
Добавлено через 1 минуту
size = 9 для этого случая
1
Эксперт С++
2343 / 1716 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
17.03.2010, 15:06 13
Цитата Сообщение от Chajnik Посмотреть сообщение
К стати можешь сразу вывести в том же цикле!
Не надо мешать в кашу инициализацию данных и их вывод.

UKOL, в Си нет констант (за исключение компиляторов, поддерживающих стандарт C99).
Используй макросы:
C
1
#define SIZE 9
1
119 / 68 / 17
Регистрация: 17.11.2009
Сообщений: 261
17.03.2010, 15:44 14
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
UKOL, в Си нет констант (за исключение компиляторов, поддерживающих стандарт C99).
Используй макросы:
Может сам все таки исправишь, а то я вообще с Си не знаком... я только предположил программу, на С++ запросто а вот за Си пока еще не брался.
1
Эксперт С++
2343 / 1716 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
17.03.2010, 15:48 15
Цитата Сообщение от UKOL Посмотреть сообщение
Может сам все таки исправишь, а то я вообще с Си не знаком... я только предположил программу, на С++ запросто а вот за Си пока еще не брался.
Ну как то так:
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define strok 9
#define stolb 9
 
int main()
{
  int a[strok][stolb];
  int i, j;
 
  srand(time(NULL));
 
  //заполняем и выыводим массив}
   printf("Ishodnaja matrix:\n\n");
  for(i=0; i<strok;i++)
  {
    for(j=0; j<stolb;j++)
        {
      a[i][j]=1+rand()%9;
      printf("%d\t",a[i][j]);
        }
   printf("\n");
  }
  //транспонируем матрицу
  printf("\nTrnsponirovannaja matrix:\n\n");
  for(i=0; i<stolb; i++)
  {
    for(j=0;j<strok; j++)
        {
      printf("%d\t",a[j][i]);
        }
    printf("\n");
  }
  return 0;
}
1
0 / 0 / 2
Регистрация: 09.09.2017
Сообщений: 75
11.10.2017, 23:16 16
Что-то код у вас очень большой
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
#include <iostream>
#include <cstdlib>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Ukrainian");
    const int N = 9, M = 9;
    int a = 0, b = 99;
    int A[N][M];
    for (int i = 0; i < N; i++) {
        for(int j=0; j<M;j++){
            A[i][j] = a + rand() % (b - a + 1);             
            cout << A[i][j] << " ";
        }
        cout << endl;
    }
    cout << "------------------------------------------\n";
 
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            if (A[i] != A[j])
                A[i][j] = A[j][i];
            cout << A[i][j] << " ";
        }
        cout << endl;
 
    }
    system("pause");
    return 0;
}
Компактнее будет, за симетрию отвечает вот этот цикл
C++
1
2
3
4
5
6
7
8
9
for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            if (A[i] != A[j])
                A[i][j] = A[j][i];
            cout << A[i][j] << " ";
        }
        cout << endl;
 
    }
0
0 / 0 / 0
Регистрация: 01.02.2021
Сообщений: 13
11.02.2021, 10:25 17
for (int j = 0; j < M; j++)
{
A[i][j] = a + rand() % (b - a + 1);
cout << A[i][j] << " ";
}
можете объяснить вот эту часть?
0
7421 / 5016 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
11.02.2021, 11:32 18
C++
1
2
3
4
5
6
7
8
9
for (int i = 0; i < N; i++) // внешний цикл, i изменяется от 0 до N-1 с шагом 1
{ 
    for(int j = 0; j < M; j++) // внутренний цикл, j изменяется от 0 до M-1 c шагом 1
    { 
        A[i][j] = a + rand() % (b - a + 1); // элементу A[i][j] присваивается случайное значение из диапазона [a,b]             
        cout << A[i][j] << " "; // вывод элемента A[i][j] на печать
    }
cout << endl; // перенос строки
}
проход по массиву осуществляется по строкам слева-направо сверху вниз, т.е. сначала проходим по первой строке слева-направо, затем по второй слева направо и т.д.
0
0 / 0 / 0
Регистрация: 01.02.2021
Сообщений: 13
12.02.2021, 19:47 19
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
if (A[i] != A[j])
A[i][j] = A[j][i];
cout << A[i][j] << " ";
}
cout << endl;

}
можете объяснит каждую строку
0
7421 / 5016 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
12.02.2021, 20:18 20
Цитата Сообщение от bolaat0va Посмотреть сообщение
можете объяснит каждую строку
написан бред - код который Вы разбираете не решает поставленной задачи
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2021, 20:18
Помогаю со студенческими работами здесь

Отобразить матрицу симметрично относительно побочной диагонали
Как отобразить матрицу симметрично относительно побочной диагонали в с++?

Заполнить квадратную матрицу случайными числами, а затем обнулить элементы выше главной диагонали
Напишите программу, которая заполняет квадратную матрицу случайными числами в интервале , а затем...

Заполнить матрицу случайными числами. На главной диагонали разместить суммы элементов, которые лежат на той же строке и том же столбце
Заполнить матрицу случайными числами. На главной диагонали разместить суммы элементов, которые...

Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке
Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке.


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

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

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