Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/36: Рейтинг темы: голосов - 36, средняя оценка - 4.92
BumbleBee
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 10
1

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

14.03.2010, 22:03. Просмотров 6663. Ответов 15
Метки нет (Все метки)

Заполнить матрицу случайными числами. Отобразить матрицу симметрично относительно главной диагонали
0
Изображения
 
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2010, 22:03
Ответы с готовыми решениями:

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

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

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

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

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

15
UKOL
112 / 64 / 14
Регистрация: 17.11.2009
Сообщений: 258
14.03.2010, 23:40 2
Пиши свой код, что не получается поможем.
0
BumbleBee
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 10
15.03.2010, 00:06  [ТС] 3
я первокурсник политеха и пока не очень розбираюсь((( помогите плз
0
kirjushyk
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
Sergey_O
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
Chajnik
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
UKOL
112 / 64 / 14
Регистрация: 17.11.2009
Сообщений: 258
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
Chajnik
1 / 1 / 0
Регистрация: 05.03.2010
Сообщений: 8
15.03.2010, 08:36 8
Чето я не то написала О_о
Вобщем код писать не буду но идея такова:если i<=j заполняешь else matrix[i][j]=matrix[j][i]
Вобщем как-то так
0
kirjushyk
60 / 22 / 2
Регистрация: 13.03.2010
Сообщений: 65
15.03.2010, 18:44 9
Да, действительно, я по ошибке вместо i и j указал 9 =(
0
BumbleBee
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
UKOL
112 / 64 / 14
Регистрация: 17.11.2009
Сообщений: 258
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
fasked
Эксперт С++
4982 / 2561 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 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
CyBOSSeR
Эксперт С++
2311 / 1684 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
17.03.2010, 15:06 13
Цитата Сообщение от Chajnik Посмотреть сообщение
К стати можешь сразу вывести в том же цикле!
Не надо мешать в кашу инициализацию данных и их вывод.

UKOL, в Си нет констант (за исключение компиляторов, поддерживающих стандарт C99).
Используй макросы:
C
1
#define SIZE 9
1
UKOL
112 / 64 / 14
Регистрация: 17.11.2009
Сообщений: 258
17.03.2010, 15:44 14
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
UKOL, в Си нет констант (за исключение компиляторов, поддерживающих стандарт C99).
Используй макросы:
Может сам все таки исправишь, а то я вообще с Си не знаком... я только предположил программу, на С++ запросто а вот за Си пока еще не брался.
1
CyBOSSeR
Эксперт С++
2311 / 1684 / 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
podoprigora_art
0 / 0 / 2
Регистрация: 09.09.2017
Сообщений: 66
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
11.10.2017, 23:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2017, 23:16

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

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

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


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

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

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