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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
flexalumna2008
1 / 1 / 0
Регистрация: 07.09.2011
Сообщений: 35
#1

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

11.12.2011, 00:44. Просмотров 700. Ответов 3
Метки нет (Все метки)

Помогите пожалуйста хотя бы часть кода написать на С.

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++ Путем перестановки элементов квадратной матрицы добиться того,чтобы ее макс элемент находился в левом верхнем углу
C++ Повернуть треугольник на 90 градусов несколько раз
C++ Матрицу из файла,повернуть на 90 градусов по часовой
C++ Повернуть матрицу на 90, 180, 270 градусов
Повернуть квадратную матрицу на 90 градусов по часовой стрелке C++
C++ Матрицу повернуть на 90 градусов по часовой стрелке на C++
C++ Как повернуть элементы матрицы на 90 градусов против часовой стрелки?
C++ Необходимо повернуть все элементы матрицы, кроме диагональных, против часовой стрелки на 90 градусов
Дан массив N × M. Требуется повернуть его по часовой стрелке на 90 градусов C++
Повернуть матрицу с случайными числами на 90 градусов против часовой стрелки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Заблокирован
11.12.2011, 02:05     матрицы: повернуть на 90 градусов;макс.значение элементов... #3
Цитата Сообщение от 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 градусов;макс.значение элементов...
Ответ Создать тему
Опции темы

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