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

для чего нужна эта строчка в с++ int x_step = (iter % 2 == 0 ? 1 : -1); и int y_step = (iter % 2 == 0 ? -1 : 1); - C++

Восстановить пароль Регистрация
 
mice
-3 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 26
22.12.2011, 21:21     для чего нужна эта строчка в с++ int x_step = (iter % 2 == 0 ? 1 : -1); и int y_step = (iter % 2 == 0 ? -1 : 1); #1
вот int x_step = (iter % 2 == 0 ? 1 : -1); и int y_step = (iter % 2 == 0 ? -1 : 1);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2011, 21:21     для чего нужна эта строчка в с++ int x_step = (iter % 2 == 0 ? 1 : -1); и int y_step = (iter % 2 == 0 ? -1 : 1);
Посмотрите здесь:

[Linker error] undefined reference to `sterling(int, int, int)' C++
C++ Что означает эта строка? int _tmain(int argc, _TCHAR* argv[])
C++ Написать функцию типа Beaty(int iA, int iB, int *pc)
Функции float average(int arrray[],int from,int to) C++
C++ Преобразовать int в const int для установки размера массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.12.2011, 21:23     для чего нужна эта строчка в с++ int x_step = (iter % 2 == 0 ? 1 : -1); и int y_step = (iter % 2 == 0 ? -1 : 1); #2
Тернарная операция
mice
-3 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 26
22.12.2011, 21:26  [ТС]     для чего нужна эта строчка в с++ int x_step = (iter % 2 == 0 ? 1 : -1); и int y_step = (iter % 2 == 0 ? -1 : 1); #3
а ее проще можно записать или заменить?
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.12.2011, 21:32     для чего нужна эта строчка в с++ int x_step = (iter % 2 == 0 ? 1 : -1); и int y_step = (iter % 2 == 0 ? -1 : 1); #4
C++
1
2
3
4
5
6
int x_step = (iter % 2 == 0 ? 1 : -1);
int x_step;
if(iter % 2 == 0)
    x_step = 1;
else
    x_step = -1;
Вторая по аналогии
mice
-3 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 26
22.12.2011, 21:34  [ТС]     для чего нужна эта строчка в с++ int x_step = (iter % 2 == 0 ? 1 : -1); и int y_step = (iter % 2 == 0 ? -1 : 1); #5
о, спасибо большое! а вот еще последний вопрос можно ли эту программу написать еще проще
вот код
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
#include <iostream>
#include <iomanip>
using namespace std;
const int n=9;
void fill_matrix(int value,     // Значение для следующего элемента матрицы.
        int iter,       // Порядковый номер итерации (вызова функции).
        int curr_row,   // Текущий ряд (строка).
        int curr_col,   // Текущая колонка (столбец).
        int rows,       // Количество рядов в матрице.
        int cols,       // Количество колонок в матрице.
        int mtrx[][n]) {    // Матрица.
    // Получаем значение шага по горизонтали и вертикали
    // в зависимости от номера итерации: если четный, то 
    // движемся вправо и вверх, если нечетный - то влево и вниз.
    int x_step = (iter % 2 == 0 ? 1 : -1); // если остаток от деления
    int y_step = (iter % 2 == 0 ? -1 : 1);
 
    // Цикл для заполнения элементов в текущем ряду (по горизонтали).
    for (int i = 0; i < iter; ++i) {
        curr_col += x_step;
        if (curr_col < 0 || curr_col >= n) {
            return;
        }
        mtrx[curr_row][curr_col] = value++;
    }
    
    // Цикл для заполнения элементов в текущем столбце (по вертикали).
    for (int j = 0; j < iter; ++j) {
        curr_row += y_step;
        if (curr_row < 0 || curr_row >= n) {
            return;
        }
        mtrx[curr_row][curr_col] = value++;
        
    }
 
    // Инкремент счетчика итераций.
    ++iter;
 
    // Рекурсивный вызов с текущими значениями.
    fill_matrix(value, iter, curr_row, curr_col, n, n, mtrx);
}
 
int main()
{
    //Матрица
    int mtrx[n][n];
 
    
//  int rows=9; // кол-во строк.
//  int cols=9; // кол-во столбцов.
    
 
    // Текущая позиция по вертикали.
    int curr_row = n / 2;
    // Текущая позиция по горизонтали.
    int curr_col = n / 2;
 
    // Заполнение матрицы.
    // Первый элемент заносим в матрицу явно.
    mtrx[curr_row][curr_col] = 1;
    fill_matrix(2, 1, curr_row, curr_col, n, n, mtrx);
 
    //Выводим матрицу
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cout << setw(5) << mtrx[i][j];
        }
        cout << endl;
    }
 
    system("PAUSE");
 
    return 0;
}
 Комментарий модератора 
Используйте теги форматирования кода!
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.12.2011, 21:38     для чего нужна эта строчка в с++ int x_step = (iter % 2 == 0 ? 1 : -1); и int y_step = (iter % 2 == 0 ? -1 : 1); #6
Не хочу копаться в чужом коде, проще задание скажите.
mice
-3 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 26
22.12.2011, 21:41  [ТС]     для чего нужна эта строчка в с++ int x_step = (iter % 2 == 0 ? 1 : -1); и int y_step = (iter % 2 == 0 ? -1 : 1); #7
Создать квадратную матрицу размером 9*9
и заполнить ее числами как показано на рисунке
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.12.2011, 21:43     для чего нужна эта строчка в с++ int x_step = (iter % 2 == 0 ? 1 : -1); и int y_step = (iter % 2 == 0 ? -1 : 1); #8
Цитата Сообщение от mice Посмотреть сообщение
на рисунке
.....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2011, 21:47     для чего нужна эта строчка в с++ int x_step = (iter % 2 == 0 ? 1 : -1); и int y_step = (iter % 2 == 0 ? -1 : 1);
Еще ссылки по теме:

C++ Для чего нужно писать в int main() в скобках всякие args потом объявлять переменные, и прочее. Для чего если можно в сборках это все обьявлять.
Объясните для чего нужна строчка? C++
C++ Зачем преобразовывать itsVal в int, если эта переменная и так объявлена как тип int

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

Или воспользуйтесь поиском по форуму:
mice
-3 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 26
22.12.2011, 21:47  [ТС]     для чего нужна эта строчка в с++ int x_step = (iter % 2 == 0 ? 1 : -1); и int y_step = (iter % 2 == 0 ? -1 : 1); #9
извините, она расположена по этой ссылке программа должна выполняться так как показано на рисунке, а выполняется с точностью до наоборот
Yandex
Объявления
22.12.2011, 21:47     для чего нужна эта строчка в с++ int x_step = (iter % 2 == 0 ? 1 : -1); и int y_step = (iter % 2 == 0 ? -1 : 1);
Ответ Создать тему
Опции темы

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