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

Заполнить квадратную матрицу по правилу «шахматная доска» - C++

Восстановить пароль Регистрация
 
Алина1234
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 38
08.07.2015, 10:00     Заполнить квадратную матрицу по правилу «шахматная доска» #1
Помогите заполнить квадратную матрицу порядка N по следующему правилу: «шахматная доска» - чередовать в каждой строке числа 0 и 1, причем одна строка начинается с 0, другая – с 1, и т.д.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2015, 10:00     Заполнить квадратную матрицу по правилу «шахматная доска»
Посмотрите здесь:

Заполнить квадратную матрицу размером N x N по спирали C++
Заполнить квадратную матрицу порядка N по определенному правилу C++
Заполнить квадратную матрицу следующим способом C++
Заполнить матрицу по правилу C++
Написать функцию, которая заполняет квадратную матрицу числами по указанному правилу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nkey
308 / 61 / 10
Регистрация: 21.12.2011
Сообщений: 267
08.07.2015, 11:04     Заполнить квадратную матрицу по правилу «шахматная доска» #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <stdio.h>
#define n 6
 
int main() {
    int a[n][n];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (n % 2 == 0) {
                if ((j + (i*(n - 1))) % 2 == 0)
                    a[i][j] = 0;
                else
                    a[i][j] = 1;
            }
            else {
                if ((j + (i*n)) % 2 == 0)
                    a[i][j] = 0;
                else
                    a[i][j] = 1;
            }
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            printf("%i ", a[i][j]);
        }
        printf("\n");
    }
    getchar();
}
Алина1234
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 38
08.07.2015, 11:13  [ТС]     Заполнить квадратную матрицу по правилу «шахматная доска» #3
Спасибо большое!
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
08.07.2015, 11:38     Заполнить квадратную матрицу по правилу «шахматная доска» #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main()
{
const N = 4;
int matr[N][N] = {0};
 
static bool odd_even = false;
for( int i=0; i<N; i++ )
  {
  odd_even ^= 1;
  for( int j=odd_even; j<N; j+=2 )
    matr[i][j] = 1;
  }
 
for( int i=0; i<N; i++ )
  {
  for( int j=0; j<N; j++ )
    cout << matr[i][j] << " ";
  cout << "\n";
  }
cin.ignore();
return 0;
}
Doddger
11 / 11 / 3
Регистрация: 24.09.2014
Сообщений: 70
08.07.2015, 12:28     Заполнить квадратную матрицу по правилу «шахматная доска» #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
#include <iostream>
using namespace std;
 
int main()
{
    int i, j;
    int n;
    cout << "n = ";
    cin >> n;
    int mass[n][n];
    cout << "mass: \n";
    for (i = 0; i < n; i++)
        for (j = 0; j < n; j++){
            if (((i + j) % 2) == 0)
                mass[i][j] = 0;
            else
                mass[i][j] = 1;
            cout << mass[i][j] << (j == (n - 1) ? "\n" : " ");
 
        }
    
    return 0;
}
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
08.07.2015, 12:49     Заполнить квадратную матрицу по правилу «шахматная доска» #6
Цитата Сообщение от Doddger Посмотреть сообщение
C++
1
2
3
4
            if (((i + j) % 2) == 0)
                mass[i][j] = 0;
            else
                mass[i][j] = 1;
C++
mass[i][j] = ((i + j) % 2)? 1 : 0;
Если уж на то пошло.
Doddger
11 / 11 / 3
Регистрация: 24.09.2014
Сообщений: 70
08.07.2015, 12:54     Заполнить квадратную матрицу по правилу «шахматная доска» #7
Век живи - век учись (с)
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
08.07.2015, 12:54     Заполнить квадратную матрицу по правилу «шахматная доска» #8
C++
1
mass[i][j] = (i + j) % 2;
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Если уж на то пошло
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
08.07.2015, 12:57     Заполнить квадратную матрицу по правилу «шахматная доска» #9
Kastaneda, я тут думал мож через memset как-то реализовать поинтересней.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2015, 18:43     Заполнить квадратную матрицу по правилу «шахматная доска»
Еще ссылки по теме:

C++ Заполнить квадратную матрицу 10 на 10 змейкой
Заполнить квадратную матрицу змейкой C++
Заполнить квадратную матрицу следующим способом C++

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

Или воспользуйтесь поиском по форуму:
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
08.07.2015, 18:43     Заполнить квадратную матрицу по правилу «шахматная доска» #10
Цитата Сообщение от SatanaXIII Посмотреть сообщение
я тут думал мож через memset как-то реализовать поинтересней.
Не, там побайтно заполняется, неполучится. Через std::fill можно сделать.

Добавлено через 32 минуты
Как-то так
C++
1
2
3
4
long long *begin = (long long*)matr;
long long *end = (long long*)((long long)(&matr[N - 1][N - 1]) & ~7); // warning: 18+
std::fill(begin, end, 1L);
matr[N - 1][N - 1] = 1;
1. Только если N нечетное
2. С расчетом, что sizof(int) * 2 = sizeof(long long)
3. С расчетом, что &matr[0] % 8 = 0

Короче просто поиграться, не для продакшна. Некогда додумывать, еще на работе
Yandex
Объявления
08.07.2015, 18:43     Заполнить квадратную матрицу по правилу «шахматная доска»
Ответ Создать тему
Опции темы

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