Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
6 / 6 / 3
Регистрация: 28.05.2010
Сообщений: 24

Заполнить матрицу

28.05.2010, 18:46. Показов 1026. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
необходимо заполнить матрицу
Изображения
 
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.05.2010, 18:46
Ответы с готовыми решениями:

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

Заполнить матрицу случайными числами. Развернуть матрицу на 90(градусов) против часовой стрелки
Заполнить матрицу случайными числами. Развернуть матрицу на 90o против часовой стрелки

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

9
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
28.05.2010, 20:36
И что это значит?
0
 Аватар для kazak
3604 / 2744 / 356
Регистрация: 11.03.2009
Сообщений: 6,306
28.05.2010, 20:44
Цитата Сообщение от silent_1991 Посмотреть сообщение
И что это значит?
Порядок заполнения массива.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
28.05.2010, 20:51
Мда уж... не сразу и догадался))) Отвык уже от таких заданий...
0
6 / 6 / 3
Регистрация: 28.05.2010
Сообщений: 24
28.05.2010, 23:13  [ТС]
Цитата Сообщение от kazak Посмотреть сообщение
Порядок заполнения массива.
надо просто заполнить массив в такой последовательности как на рисунке последовательными числами
0
6 / 6 / 3
Регистрация: 28.05.2010
Сообщений: 24
30.05.2010, 23:42  [ТС]
никто не знает как можно заполнить так матрицу, очень нужно please....
0
33 / 33 / 5
Регистрация: 16.11.2009
Сообщений: 207
31.05.2010, 01:08
а я не понял че это такое
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
31.05.2010, 04:30
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include<iostream>
#include<iomanip>
 
const size_t m = 9;//Фиксированное значение.
const size_t n = 10;//Может быть любым >= 5.
 
int matrix[m][n];
 
struct T_point
{
    size_t i_;
    size_t j_;
    T_point
        (
            size_t  i = 0,
            size_t  j = 0
        ) : i_(i), j_(j)
    {}
 
    bool operator== (T_point p)
    {
        return i_ == p.i_ && j_ == p.j_;
    }
 
    bool operator!= (T_point p)
    {
        return !(*this == p);
    }
};
 
size_t  val = 1;
 
void fill_line
    (
        T_point&  p_beg,
        int       i_shift,
        int       j_shift
    )
{ 
    T_point  p_end(p_beg.i_ + i_shift, p_beg.j_ + j_shift);
    int i_step = i_shift ? i_shift / abs(i_shift) : 0; 
    int j_step = j_shift ? j_shift / abs(j_shift) : 0;
    
    for( ; p_beg != p_end; p_beg.i_ += i_step, p_beg.j_ += j_step, ++val)
    {
        matrix[p_beg.i_][p_beg.j_] = val;        
        matrix[m - 1 - p_beg.i_][n - 1 - p_beg.j_] = m * n + 1 - val;        
    }
}
 
void  fill_line_vniz
    (
        T_point&  p_beg,        
        int       vniz_shift
    )
 
{
    fill_line(p_beg, vniz_shift, 0);    
}
 
void fill_line_vverx
    (
        T_point&  p_beg,        
        int       vverx_shift
    )
 
{
    fill_line(p_beg, -vverx_shift, 0);    
}
 
void fill_line_vpravo
    (
        T_point&  p_beg,        
        int       vpravo_shift
    )
 
{
    fill_line(p_beg, 0, vpravo_shift);    
}
 
void fill_line_vlevo
    (
        T_point&  p_beg,        
        int       vlevo_shift
    )
 
{
    fill_line(p_beg, 0, -vlevo_shift);    
}
 
void fill_oborot_vlevo
    (
        T_point&  p_beg,        
        size_t&   vert_abs_shift,
        size_t&   horis_abs_shift
    )
{    
    fill_line_vpravo (p_beg, horis_abs_shift++);
    fill_line_vverx  (p_beg, vert_abs_shift++);
    fill_line_vlevo  (p_beg, horis_abs_shift++);
    fill_line_vniz   (p_beg, vert_abs_shift++);
}
 
void fill_matrix()
{
    T_point  p_beg(2, 2);
    size_t   vert_abs_shift   = 1;
    size_t   horis_abs_shift  = n - 4;
    
    for(size_t oborot_count = 1; oborot_count <= 2; ++oborot_count)
    {
        fill_oborot_vlevo(p_beg, vert_abs_shift, horis_abs_shift);
    }    
    fill_line_vpravo(p_beg, (n + 1) / 2);
}
 
void print_matrix()
{
    for(size_t i = 0; i < m; ++i)
    {
        for(size_t j = 0; j < n; ++j)
        {            
            std::cout << std::setw(5) << matrix[i][j];
        }
        std::cout << std::endl;
    }
}
 
int main()
{
    fill_matrix();
    print_matrix();
    return 0;
}
1
6 / 6 / 3
Регистрация: 28.05.2010
Сообщений: 24
31.05.2010, 18:40  [ТС]
Большое Вам спасибо!
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
01.06.2010, 14:27
Вообще-то, если начать заполнять матрицу с середины, то проще получится:
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include<iostream>
#include<iomanip>
 
const int m = 9;//Фиксированное значение.
const int n = 10;//Может быть любым >= 5.
 
const int EMPTY_VAL  = 0;
int matrix[m][n]     = {EMPTY_VAL};
 
enum T_napravl
{
    VLEVO,
    VVERX,
    VPRAVO,
    VNIZ,
    MAX_NAPRAVL_COUNT
};
 
void fill_cell
    (
        int  i, 
        int  j,
        int  val
    )
{
    matrix[i][j] = val;        
    matrix[m - 1 - i][n - 1 - j] = m * n + 1 - val;    
}
 
bool is_correct_empty_cell(int i, int j)
{
    return    0 <= i && i < m
           && 0 <= j && j < n
           && matrix[i][j] == EMPTY_VAL;
}
 
bool good_go_to_cell
    (
        int& i,
        int& j,
        int  i_new,
        int  j_new
    )
{
    bool res;    
    if(res = is_correct_empty_cell(i_new, j_new))
    {
        i = i_new;   
        j = j_new;        
    }
    return res;     
}
 
bool good_go_to_napravl
    (
        T_napravl  napravl,
        int&       i,
        int&       j
    )
{
    switch(napravl)
    {
    case VLEVO  : return good_go_to_cell(i,  j,  i,      j - 1);
    case VVERX  : return good_go_to_cell(i,  j,  i - 1,  j    );
    case VPRAVO : return good_go_to_cell(i,  j,  i,      j + 1);
    case VNIZ   : return good_go_to_cell(i,  j,  i + 1,  j    );
    default     : return false;
    }
}
 
bool get_next_cell(int& i, int& j)
{    
    static T_napravl  cur_napravl = VLEVO;
    for(int napravl_count = 0; napravl_count < MAX_NAPRAVL_COUNT; ++napravl_count)
    {
        cur_napravl 
            = static_cast<T_napravl>((cur_napravl + napravl_count) % MAX_NAPRAVL_COUNT);
        if(good_go_to_napravl(cur_napravl, i, j))
        {             
            return true;
        }
    }    
    return false;
}
 
void fill_matrix()
{
    int  val  = (m * n + 1) / 2;
    int  i    = (m - 1)     / 2;
    int  j    = (n - 1)     / 2;
    do
    {
        fill_cell(i, j, val--);        
    }while(get_next_cell(i, j));
}
 
void print_matrix()
{
    for(int i = 0; i < m; ++i)
    {
        for(int j = 0; j < n; ++j)
        {            
            std::cout << std::setw(5) << matrix[i][j];
        }
        std::cout << std::endl;
    }
}
 
int main()
{
    fill_matrix();
    print_matrix();
    return 0;
}
Добавлено через 1 час 46 минут
Кстати, эта программа заполняет симметрично-загогулисто матрицу любого размера.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.06.2010, 14:27
Помогаю со студенческими работами здесь

Заполнить матрицу случайными числами. Разбить матрицу на квадраты размером 3х3. В центре каждого квадрата поме
Помогите пожалуйста есть некоторые мысли, ну успешного ответа нет :((( #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...

Заполнить матрицу
Заполнить матрицу размера nхn целыми числами 1, 2, …, n2. зигзагом http://s12.postimg.org/kho343tl9/098765.png #include...

Заполнить матрицу
Заполните матрицу ЛП,от центра по спирали:вниз-влево-вверх-вправо.

Заполнить матрицу
Почему заполняются все эл-ты матрицы, хотя по логике должны только все столбцы 0-й строки? #include &lt;iostream&gt; using namespace...

Заполнить матрицу
Здравствуйте, уважаемые форумчане! Мне нужно сделать программку, которая бы заполняла строку матрицы числом (или символом) , которое...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru