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

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

Войти
Регистрация
Восстановить пароль
 
Aecttann
 Аватар для Aecttann
6 / 6 / 0
Регистрация: 19.10.2013
Сообщений: 289
#1

Объяснить часть кода - C++

21.12.2013, 17:07. Просмотров 192. Ответов 3
Метки нет (Все метки)

Программка заполняет матрицу случайными числами и отображает правую половину матрицы на левую зеркально симметрично относительно вертикальной оси.
Подскажите пожалуйста, для чего нужна данная строка:

C++
1
for (j = m >> 1; j < m; j++)
и где именно в коде происходит отображение относительно вертикальной оси, а не, допустим, горизонтальной.

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
#include <iostream>
#include <cstdlib>
#include <locale.h>
#include <time.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "RUS");
 
    srand(time(NULL));
 
    int n, m, i, j;
 
    cout << "Введите количество строк " << endl;
    cin >> n;
    cout << "Введите количество столбцов" << endl;
    cin >> m;
 
    int** matr = new int*[n];
    for (i = 0; i < n; i++)
        matr[i] = new int[m];
 
    for (i = 0; i < n; i++)
        for (j = 0; j < m; j++)
            matr[i][j] = rand() % 100;
 
    cout << "Начальная матрица: " << endl;
    for (i = 0; i < n; i++, cout << endl)
        for (j = 0; j < m; j++)
            cout << matr[i][j] << " ";
 
    for (i = 0; i < n; i++)
        for (j = m >> 1; j < m; j++)
            matr[i][m - j - 1] = matr[i][j];
 
    cout << "Конечная матрица: " << endl;
    for (i = 0; i < n; i++, cout << endl)
        for (j = 0; j < m; j++)
            cout << matr[i][j] << " ";
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2013, 17:07     Объяснить часть кода
Посмотрите здесь:

C++ Объяснить фрагмент кода
C++ Объяснить строку кода
Какие действия исполняет заданная часть программы? Если есть ошибки исправить их и объяснить исправления C++
Объяснить пару строк кода C++
C++ Объяснить назначение элемента кода
Объяснить работу кода C++
C++ Объяснить почему fin.getline() прочитывает только часть строк (файловый ввод/вывод)
C++ Объяснить, что происходит в заданном фрагменте кода
C++ Подробно прокомментировать и объяснить каждую строчку кода
C++ Объяснить работу кода
Объяснить и прокомментировать каждую строку кода C++
C++ Объяснить кусок кода

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6227 / 3472 / 424
Регистрация: 29.11.2010
Сообщений: 9,178
21.12.2013, 17:14     Объяснить часть кода #2
Цитата Сообщение от Aecttann Посмотреть сообщение
j = m >> 1
побитовый сдвиг направо
было 1(1) стало 0(0)
было 10(2) стало 1(1)
было 11(3) стало 1(1)
было 100(4) стало 10(2)
было 101(5) стало 10(2)
было 110(6) стало 11(3)

Добавлено через 36 секунд
память у вас не освобождается.
Надо delete[] дописать в конце программы.
Aecttann
 Аватар для Aecttann
6 / 6 / 0
Регистрация: 19.10.2013
Сообщений: 289
21.12.2013, 17:24  [ТС]     Объяснить часть кода #3
Цитата Сообщение от MrGluck Посмотреть сообщение
побитовый сдвиг направо
было 1(1) стало 0(0)
было 10(2) стало 1(1)
было 11(3) стало 1(1)
было 100(4) стало 10(2)
было 101(5) стало 10(2)
было 110(6) стало 11(3)
Спасибо

а для чего эта строка?
C++
1
matr[i][m - j - 1] = matr[i][j];
MrGluck
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6227 / 3472 / 424
Регистрация: 29.11.2010
Сообщений: 9,178
21.12.2013, 17:24     Объяснить часть кода #4
Цитата Сообщение от Aecttann Посмотреть сообщение
matr[i][m - j - 1] = matr[i][j];
симметричное отображение элементов i-ой строки
Yandex
Объявления
21.12.2013, 17:24     Объяснить часть кода
Ответ Создать тему
Опции темы

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