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

Заполнить матрицу размером n*m змейкой по горизонтали, начиная движение от элемента matrix[0][0] - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 32, средняя оценка - 4.88
Бородатый Админ
1 / 1 / 0
Регистрация: 17.11.2012
Сообщений: 27
23.02.2013, 02:33     Заполнить матрицу размером n*m змейкой по горизонтали, начиная движение от элемента matrix[0][0] #1
Необходимо заполнить массив int a[n][m] следующим образом (пример для n=4, m=6):
0 1 2 3 4 5
11 10 9 8 7 6
12 13 14 15 16 17
23 22 21 20 19 18
Пытаюсь сделать вот так, но не получается:
C++
1
2
3
4
5
6
7
for(i=1; i<n; i+=2) {
    for(j=0; j<m; j++)
      a[i-1][j] = j;
    p = j+1;
    for(j=j+m; j<p; j--)
      a[i][j] = j;
  }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2013, 02:33     Заполнить матрицу размером n*m змейкой по горизонтали, начиная движение от элемента matrix[0][0]
Посмотрите здесь:

C++ Заполнить матрицу змейкой
Заполнить квадратную матрицу размером N x N по спирали C++
C++ Заполнить матрицу заданного размера числами 1,2,3,4 так, чтобы по горизонтали, вертикали и диагонали не было одинаковых рядом стоящих чисел.
Двухмерный массив (заполнить змейкой квадратную матрицу) C++
C++ Заполнить матрицу змейкой
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Develops
 Аватар для Develops
15 / 15 / 1
Регистрация: 19.02.2013
Сообщений: 38
23.02.2013, 02:48     Заполнить матрицу размером n*m змейкой по горизонтали, начиная движение от элемента matrix[0][0] #2
Попробуйте этот код:
C++
1
2
3
4
5
6
7
8
9
10
11
int counter = 0, j;
for(int i = 0; i < n; i++) {
    if((i % 2) == 0) {
        for(j = 0; j < m; j++)
            a[i][j] = counter;
    } else {
        for(j = m - 1; j >= 0; j--)
            a[i][j] = counter;
    }
    counter++;
}
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
23.02.2013, 03:12     Заполнить матрицу размером n*m змейкой по горизонтали, начиная движение от элемента matrix[0][0] #3
Заполнение матрицы змейкой (по спирали)
ProgaPash
0 / 0 / 0
Регистрация: 27.12.2015
Сообщений: 2
27.12.2015, 19:29     Заполнить матрицу размером n*m змейкой по горизонтали, начиная движение от элемента matrix[0][0] #4
Попробуй вот это:
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
for(c=0;c<a;c++)
{
    for(int d=0;d<b;d++)
    {
        if(c%2==0)
        {
        i[c][d]=sum;
        sum++;
        }
        else{
         i[c][d]=sum;
        sum--;
        }
    }
    sum=sum+10;
}
for(c=0;c<a;c++)
{
    for(int d=0;d<b;d++)
    {
        cout<<i[c][d]<<" ";
    }
    
}
Добавлено через 5 минут
Только в этом коде он делает где-то на один шаг в цикле больше,а где то меньше
gru74ik
Модератор
 Аватар для gru74ik
3121 / 1347 / 167
Регистрация: 20.02.2013
Сообщений: 3,852
Записей в блоге: 17
27.12.2015, 20:53     Заполнить матрицу размером n*m змейкой по горизонтали, начиная движение от элемента matrix[0][0] #5
Бородатый Админ, вот тут посмотрите готовый вариант.
Yandex
Объявления
27.12.2015, 20:53     Заполнить матрицу размером n*m змейкой по горизонтали, начиная движение от элемента matrix[0][0]
Ответ Создать тему
Опции темы

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