Форум программистов, компьютерный форум, киберфорум
sourcerer
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  

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

Запись от sourcerer размещена 21.12.2015 в 17:23
Показов 2391 Комментарии 0

Ещё одна задачка из серии "Ыыы, сделайте мне матрицы, без этих ваших классов и STL".
Себе в копилку, в качестве шпаргалки.

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
// Заполнить матрицу случайными числами. Отобразить
// матрицу симметрично относительно побочной диагонали.
 
#include <iostream>
#include <ctime>
#include <cstdlib>
 
int ** create(const int matrixSize);
void destroy(int ** matrix, const int matrixSize);
void fill_rand(int ** matrix, const int matrixSize);
void show(int ** matrix, const int matrixSize);
void turn_by_antidiagonal(int ** matrix, const int matrixSize);
int get_matrix_size_from_user();
 
int main()
{
    int n = get_matrix_size_from_user();
    int ** matrix = create(n);
    fill_rand(matrix, n);
    show(matrix, n);
    turn_by_antidiagonal(matrix, n);
    show(matrix, n);
    destroy(matrix, n);
 
    return 0;
}
 
int ** create(const int matrixSize)
{
    int ** matrix = new int * [matrixSize];
    for (int i = 0; i < matrixSize; ++i)
        matrix[i] = new int[matrixSize];
 
    return matrix;
}
 
void destroy(int ** matrix, const int matrixSize)
{
    for (int i = 0; i < matrixSize; ++i)
        delete [] matrix[i];
    delete [] matrix;
}
 
void fill_rand(int ** matrix, const int matrixSize)
{
    static bool first_time_in_this_program = true;
    if (first_time_in_this_program)
    {
        srand(time(NULL));
        first_time_in_this_program = false;
    }
 
    for(int i = 0; i < matrixSize; ++i)
        for(int j = 0; j < matrixSize; ++j)
            matrix[i][j] = rand()%89+10;
}
 
void show(int ** matrix, const int matrixSize)
{
    std::cout << "\n";
    for (int i = 0; i < matrixSize; ++i)
    {
        for (int j = 0; j < matrixSize; ++j)
        {
            std::cout << matrix[i][j] << " ";
        }
        std::cout << "\n";
    }
}
 
void turn_by_antidiagonal(int ** matrix, const int matrixSize)
{
    int temp = 0;
    int max_ind = matrixSize - 1;
    int correction = 0;
    for(int i = 0, m = max_ind; i < max_ind; ++i, --m)
    {
        for(int j = 0, n = max_ind; j < max_ind - correction; ++j, --n)
        {
            temp = matrix[i][j];
            matrix[i][j] = matrix[n][m];
            matrix[n][m] = temp;
        }
        ++correction;
    }
}
 
int get_matrix_size_from_user()
{
    std::cout << "Please enter square matrix size: ";
    int matrixSize;
    std::cin >> matrixSize;
 
    return matrixSize;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru