Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 27.10.2018
Сообщений: 17

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

05.11.2018, 09:15. Показов 2431. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Заполнить матрицу случайными числами. Отобразить главную и побочную диагонали симметрично относительно вертикальной оси.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2018, 09:15
Ответы с готовыми решениями:

Отобразить главную и побочную диагонали симметрично относительно вертикальной оси
Заповнити матрицю випадковими числами. Відобразити головну та побічну діагоналі симетрично відносно вертикальної осі. Согласно Правил...

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

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

8
Невнимательный
 Аватар для ft4l
2835 / 1259 / 357
Регистрация: 08.02.2013
Сообщений: 7,314
Записей в блоге: 2
05.11.2018, 14:17
вариант без динамического выделения памяти
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
#include <stdio.h>
#include <stdlib.h>
 
#define MS 10 // size of matrix
#define MV 0xfff // (max_value+1) of matrix
void exchange(int *x, int *y){
    int z;
    z = *x;
    *x = *y;
    *y = z;
}
 
int main() {
    int a, b, x=MS;
    int Mx[MS][MS];
    
    for (a=0; a<x; a++) {
        for (b=0; b<x; b++) {
            Mx[a][b] = rand() % MV;
            printf("\t%d", Mx[a][b]);
        }
        printf("\n");
    }
 
    printf("-------------------\n");
    for (a=0, b=x-1; a<x; a++, b--) {
        if (b != a) exchange(&Mx[a][a], &Mx[a][b]);
    }
    return 0;
}
Добавлено через 6 минут
извинююсь, прочитал отразить вместо отобразить
не стираю , может ьоже кому пригодится

Добавлено через 1 час 54 минуты
Стало интересно вот что, по поводу динамической памяти
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
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
 
#define MV 0xfff // (max_value+1) of matrix
 
int main() {
    int **Mx;
    int a=0, b, x, tmp;
    printf("size ?: ");
    scanf("%u", &x);
    // выделение под индекс
    Mx = (int**) malloc( x * sizeof(int*));
    // выделение под матрицу
    Mx[0] = (int*) malloc( x * x * sizeof(int));
    // доопределение индекса
    while(++a < x) Mx[a] = Mx[a-1] + (x * sizeof(int));
    for (a=0; a<x; a++) {
        //Mx[a] = (int*) malloc( x * sizeof(int));
        for (b=0; b<x; b++) {
            Mx[a][b] = rand() % MV;
            printf("\t%d", Mx[a][b]);
        }
        printf("\n");
    }
    printf("-------------------\n");
    for (a=0, b=x-1; a<x; a++, b--) {
        if (b == a) continue;
        tmp = Mx[a][b];
        Mx[a][b] = Mx[a][a];
        Mx[a][a] = tmp;
 
    }
    for (a=0; a<x; a++) {
        for (b=0; b<x; b++) {
            printf("\t%d", Mx[a][b]);
        }
        printf("\n");
        //free(Mx[a]);
    }
    free(Mx[0]);
    free(Mx);
    return 0;
}
Т.е. чтобы обращаться к элементам как к element[x][y] нужна дополнительная память на индексы
чего, imho , не требуется при статическом массиве.
Или ещё есть способы ....
1
0 / 0 / 0
Регистрация: 27.10.2018
Сообщений: 17
05.11.2018, 14:46  [ТС]
Спасибо,а если необходимо сделать так, чтобы всё что есть справа и слева от центра пересечения главной и побочной диагонали было 0, а вот чтоб в этом массиве сверху были числа, которые потом можно зеркально перенести вниз?
0
Невнимательный
 Аватар для ft4l
2835 / 1259 / 357
Регистрация: 08.02.2013
Сообщений: 7,314
Записей в блоге: 2
05.11.2018, 15:07
Если честно , я ничего не понял ,) в каком массиве сверху, и как это справа и слева.
я даже не знаю какая из диагоналей главная, а какая побочная, тупо предположил что их всего две..
И то что матрица квадратная, тоже сам придумал я вообще не програмист.

Думаю у Вас больше шансов сделать это, если вы сами как-то попытаетесь,
или хотя-бы как-то понятнее сформулируете вашу задачу с наглядными примерами,
типа нарисуете чтоли что-то такое
XXXXX
XXXXX
YYCZZ
XXXXX
XXXXX
И объясните что и как конкретно у Вас не получается
0
0 / 0 / 0
Регистрация: 27.10.2018
Сообщений: 17
05.11.2018, 17:14  [ТС]
Должно это выглядеть как-то так:
0 1 2 3 4 5 6 7 0
0 0 8 9 10 11 12 0 0
0 0 0 13 14 15 0 0 0
0 0 0 0 16 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 16 0 0 0 0
0 0 0 13 14 15 0 0 0
0 0 8 9 10 11 12 0 0
0 1 2 3 4 5 6 7 0
Спасибо.

Добавлено через 3 минуты
более понятней будет вот
XOOOOOOX
XXOOOOXX
XXXXOXXXX
XXOOOOXX
XOOOOOOX
0
Невнимательный
 Аватар для ft4l
2835 / 1259 / 357
Регистрация: 08.02.2013
Сообщений: 7,314
Записей в блоге: 2
05.11.2018, 23:21
Методом тыка как-то вроде симитировал такое
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
#include <stdio.h>
#include <stdlib.h>
 
#define MS 10 // size of matrix
#define MV 0xfff // (max_value+1) of matrix
void exchange(int *x, int *y){
    int z;
    z = *x;
    *x = *y;
    *y = z;
}
 
int main() {
    int a, b, c, x=MS;
    int Mx[MS][MS];
 
    for (a=0, c=x-1; a<x; a++, c--) {
        for (b=0; b<x; b++) {
                if ((a >= b && c>=b) || (b>=a && c<=b)) Mx[a][b] = 0;
            else Mx[a][b] = rand() % MV;
            printf("\t%.4d", Mx[a][b]);
        }
        printf("\n");
    }
 
    printf("-------------------\n");
    for (a=0, c=x-1; a<(x>>1); a++, c--) {
        for (b=0; b<x; b++) {
                if (a<b && c>b) exchange(&Mx[a][b],&Mx[c][b]);
        }
     }
     
    printf("-------------------\n");
    for (a=0; a<x; a++) {
        for (b=0; b<x; b++) {
                printf("\t%.4d", Mx[a][b]);
        }
        printf("\n");
     }
    return 0;
}
Жуть какую Вам задают ,) если конечно вы не решаете такие задачки ещё с какими-то сугубо-корыстными целями

Добавлено через 1 минуту
эту exchange вообще-то лучше убрать, сделать всё в main
0
0 / 0 / 0
Регистрация: 27.10.2018
Сообщений: 17
24.11.2018, 11:22  [ТС]
Вот мой код, необходимо отобразить симметрично оси, что-то не получается...
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
#include <stdio.h>
#define S 9
int Ar[S][S]; 
int main(void) {
 short l, r;  
 short r1,r2;
 short dd;  
  r1=1; r2=S-2; dd=1; 
  for (l=0; l<S; l++) { 
   for (r=0; r<S; r++)  
      if ((r<r1)||(r>r2)) Ar[l][r]=0;
      else Ar[l][r]=rand()%101;
      r1+=dd; r2-=dd;
    int b = Ar[0][1];
    Ar[0][1]=Ar[9][1];
    Ar[9][1]=b;
    
 
    if (r1>r2) dd=-dd;    }
 
  for (l=0; l<S; l++) {
    for (r=0; r<S; r++) {
      printf("%3d",Ar[l][r]);      }
    printf("\n");    }
  return 0;}
0
Невнимательный
 Аватар для ft4l
2835 / 1259 / 357
Регистрация: 08.02.2013
Сообщений: 7,314
Записей в блоге: 2
25.11.2018, 22:24
Непонятно где заполнение а где перестановка.
Если попробовать отделить одно от другого , наверно как-то так
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 <stdio.h>
#include <stdlib.h> // srand(); rand()
#include <time.h> // time()
 
#define S 9
int Ar[S][S];
 
void print_r(int* Arr, int N){// Вывод матрицы
    int i=0;
    for (;i<N*N;++i)
            printf((!(i%N)?"\n%d":"\t%d"), Arr[i]);
    printf("\n---------\n");
}
//==============
int main(void) {
    short l, r;
    short r1,r2;
    short dd;
    r1=1; r2=S-2; dd=1;
 
    srand(time(NULL));
// ===== Заполнение =====
    for (l=0; l<S; l++) {
        for (r=0; r<S; r++)
            if ((r<r1)||(r>r2)) Ar[l][r]=0;
            else Ar[l][r]=rand()%101;
        r1+=dd; r2-=dd;
        if (r1>r2) dd=-dd;
    }
//======= Вывод =========
    print_r((int*)Ar, S);// Вывод матрицы
 
//======= Перестановка =========
    for (l=0,r1=S-1; l<r1; l++,r1--)
        for (r=l+1; r<r1; r++) {
            int b = Ar[l][r];
            Ar[l][r]=Ar[r1][r];
            Ar[r1][r]=b;
        }
//======= Вывод =========
    print_r((int *)Ar, S);// Вывод матрицы
    return 0;
}
Добавлено через 21 минуту
опечатка r1+=S-1 вместо r1=S-1
//поправил
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.11.2018, 22:24
Помогаю со студенческими работами здесь

Отобразить верхнюю половину матрицы на нижнюю зеркально симметрично относительно горизонтальной оси
Заполнить случайными цифрами отобразить верхнюю половину матрицы на нижнюю зеркально симметрично относительно горизонтальной оси #include...

Отобразить матрицу симметрично относительно побочной диагонали
И так у меня есть код много-файлового проекта. Данный код должен отображать матрицу симметрично относительно побочной диагонали.А у меня...

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

Зеркально отразить элементы матрицы относительно вертикальной оси симметрии
Помогите пожалуйста сделать программу, очень нужно. Задания: 2)Дана квадратная матрица порядка M. Зеркально отразить ее элементы...

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru