Форум программистов, компьютерный форум CyberForum.ru

матрицы: повернуть на 90 градусов;макс.значение элементов... - C++

Восстановить пароль Регистрация
 
flexalumna2008
 Аватар для flexalumna2008
1 / 1 / 0
Регистрация: 07.09.2011
Сообщений: 35
11.12.2011, 00:44     матрицы: повернуть на 90 градусов;макс.значение элементов... #1
Помогите пожалуйста хотя бы часть кода написать на С.

1) повернуть массив по часовой стрелке на 90 градусов.


на 180 я поняла как поворачивать, а на 90 вроде и нашла какие-то варианты в интернете, но не могу понять КАК ИМЕНО, то есть каков принцип этого поворота. Обьясните мне "на пальцах" как очень тупому человеку, пожалуйста.


2)Опять матрица, есть диагональ (слева на право, с верху вниз). Нужно найти максимальное значение элементов помеченых на рисунке. А на рисунке отмечены те что входят в диагональ, и все что от нее вправо вверх....

Спасибо большое.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2011, 00:44     матрицы: повернуть на 90 градусов;макс.значение элементов...
Посмотрите здесь:

C++ Повернуть матрицу на 180 градусов против часовой стрелки, не создавая дополнительных массивов
повернуть произвольную матрицу на 90 градусов C++
C++ Повернуть треугольник на 90 градусов несколько раз
C++ Матрицу из файла,повернуть на 90 градусов по часовой
C++ Повернуть матрицу на 90, 180, 270 градусов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
11.12.2011, 02:01     матрицы: повернуть на 90 градусов;макс.значение элементов... #2
Цитата Сообщение от flexalumna2008 Посмотреть сообщение
2)Опять матрица, есть диагональ (слева на право, с верху вниз). Нужно найти максимальное значение элементов помеченых на рисунке. А на рисунке отмечены те что входят в диагональ, и все что от нее вправо вверх....
C
1
2
3
4
5
max = m[0][0];
for (i = 0; i < N; i++) /* N - order of a matrix */
    for (j = i; j < N; j++)
        if (m[i][j] > max)
            max = m[i][j];
Цитата Сообщение от flexalumna2008 Посмотреть сообщение
1) повернуть массив по часовой стрелке на 90 градусов.
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
#include <stdio.h>
 
#define swap(t, a, b) \
    { t temp = (a); (a) = (b); (b) = temp; }
 
void reverse(int *arr, int i, int j)
{
    if (i < j) {
        swap(int, arr[i], arr[j]);
        reverse(arr, i + 1, j - 1);
    }
}
 
#define index(i, j, ord) \
    ((i) * (ord) + (j))
 
int *transpose(int *m, int ord)
{
    int i, j;
 
    for (i = 0; i < ord; i++)
        for (j = i; j < ord; j++)
            swap(int, m[ index(i, j, ord) ],
                m[ index(j, i, ord) ]);
    return m;
}
 
int *turn90deg(int *m, int ord)
{
    int i, n;
 
    transpose(m, ord);
 
    for (n = 0, i = 0; i < ord; i++, n += ord)
        reverse(m + n, 0, ord - 1);
    return m;
}
 
void dump(int *m, int ord)
{
    int i;
 
    for (i = 0; i < ord * ord; i++)
        printf("%d%c", m[i], 
            (i+1) % ord ? ' ' : '\n');
}
 
int main()
{
    int m1[3][3] = {
        {1, 2, 3},  
        {4, 5, 6},   
        {7, 8, 9}
    };
    int m2[2][2] = {
        {1, 2},
        {3, 4}
    };
 
    turn90deg(*m1, 3);
    dump(*m1, 3);
 
    putchar('\n');
 
    turn90deg(*m2, 2);
    dump(*m2, 2);
    return 0;
}
Добавлено через 3 минуты
Цитата Сообщение от flexalumna2008 Посмотреть сообщение
на 180 я поняла как поворачивать, а на 90 вроде и нашла какие-то варианты в интернете, но не могу понять КАК ИМЕНО, то есть каков принцип этого поворота. Обьясните мне "на пальцах" как очень тупому человеку, пожалуйста.
1) транспонировать матрицу
2) переставить элементы строк в обратном порядке
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
11.12.2011, 02:05     матрицы: повернуть на 90 градусов;макс.значение элементов... #3
Цитата Сообщение от flexalumna2008 Посмотреть сообщение
Опять матрица, есть диагональ (слева на право, с верху вниз)
которой имеется конкретное определение. Судя по всему вы его не знаете.
flexalumna2008
 Аватар для flexalumna2008
1 / 1 / 0
Регистрация: 07.09.2011
Сообщений: 35
11.12.2011, 10:14  [ТС]     матрицы: повернуть на 90 градусов;макс.значение элементов... #4
alkagolik, ну забросайте меня помидорами если это существенно.
Net_Wanderer, спасибо большое!
Yandex
Объявления
11.12.2011, 10:14     матрицы: повернуть на 90 градусов;макс.значение элементов...
Ответ Создать тему
Опции темы

Текущее время: 02:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru