Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.81/16: Рейтинг темы: голосов - 16, средняя оценка - 4.81
alewka
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 36
1

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

14.10.2014, 04:22. Просмотров 3092. Ответов 15
Метки нет (Все метки)

заполнить квадратную матрицу 10 на 10 змейкой С++
вот так:
91 92 93 94...98 99 100
90 89 88 87...83 82 81
.
.
.
11 12 13 14...18 19 20
10 9 8 7....3 2 1
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2014, 04:22
Ответы с готовыми решениями:

Заполнить квадратную матрицу змейкой
заполнить квадратную матрицу NxN змейкой С++ вот так: 25 24 23 22 21 16 17 18 19 20 15 14 13...

Заполнить квадратную матрицу змейкой
Задано число N. Заполните квадратную матрицу NxN числами от 1 до N^2 “змейкой”, как показано в...

Двухмерный массив (заполнить змейкой квадратную матрицу)
Требуется заполнить змейкой квадратную матрицу так, как показано на рисунке справа: заполнение...

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

Заполнить квадратную матрицу змейкой по диагонали, начиная с элемента matrix[size-1][size-1]
Требуется написать программу, которая заполняет массив размерности n*n по заданному правилу: ...

15
sourcerer
Модератор
Эксперт CЭксперт С++
4963 / 2149 / 326
Регистрация: 20.02.2013
Сообщений: 5,582
Записей в блоге: 24
Завершенные тесты: 1
14.10.2014, 10:37 2
Лучший ответ Сообщение было отмечено mik-a-el как решение

Решение

Голова змеи начинается с числа 100:
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
//    Thx 2Vtulhu (code 38-62)
//    cyberforum.ru/cpp-beginners/thread1231280.html#post6446674
 
#include <iostream>
 
/*
Заполнить квадратную матрицу 10 на 10 змейкой:
91 92 93 94...98 99 100
90 89 88 87...83 82 81
.
.
.
11 12 13 14...18 19 20
10 9 8 7....3 2 1
*/
 
const int MATRIX_SIZE = 10;
 
void fill_matrix_snake(int ** matrix);
void show_matrix(int ** matrix);
 
int main()
{
    int ** matrix = new int * [MATRIX_SIZE];    // выделяем память
    for (int i=0; i<MATRIX_SIZE; ++i)         // для нашей матрицы
        matrix[i] = new int[MATRIX_SIZE];     // размером 10х10
 
    fill_matrix_snake(matrix);
    show_matrix(matrix);
 
    for (int i = 0; i<MATRIX_SIZE; ++i)   //освобождаем память
        delete [] matrix[i];
    delete [] matrix;
 
    return 0;
}
int first, last, add;
 
 
 
// Заполняем змейкой горизонтально справа налево сверху вниз:
void fill_matrix_snake(int ** matrix)
{
    int counter = 100;
    int first, last, add;
    for (int i=0; i<MATRIX_SIZE; ++i)
    {
        if (i&1)
        {
            first = 0;
            last = MATRIX_SIZE;
            add = 1;
        }
 
        else
        {
            first = MATRIX_SIZE - 1;
            last = -1;
            add = -1;
        }
 
        for (int j=first; j!=last; j+=add)
            matrix[i][j] = counter--;
    }
}
 
// Выводим содержимое матрицы на экран:
void show_matrix(int ** matrix)
{
    for (int i=0; i<MATRIX_SIZE; ++i)
    {
        for (int j=0; j<MATRIX_SIZE; ++j)
            std::cout << matrix[i][j] << "\t";
        std::cout << std::endl;
    }
}
Добавлено через 7 минут
Голова змеи начинается с числа 1:
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
#include <iostream>
 
/*
Заполнить квадратную матрицу 10 на 10 змейкой:
91 92 93 94...98 99 100
90 89 88 87...83 82 81
.
.
.
11 12 13 14...18 19 20
10 9 8 7....3 2 1
*/
 
const int MATRIX_SIZE = 10;
 
void fill_matrix_snake(int **matrix);
void show_matrix(int **matrix);
 
int main()
{
    int ** matrix = new int * [MATRIX_SIZE];    // выделяем память
    for (int i=0; i<MATRIX_SIZE; ++i)         // для нашей матрицы
        matrix[i] = new int[MATRIX_SIZE];     // размером 10х10
 
    fill_matrix_snake(matrix);
    show_matrix(matrix);
 
    for (int i = 0; i<MATRIX_SIZE; i++)      //освобождаем память
        delete [] matrix[i];
    delete [] matrix;
 
    return 0;
}
int first, last, add;
 
 
 
// Заполняем змейкой горизонтально справа налево снизу вверх:
void fill_matrix_snake(int ** matrix)
{
    int counter = 1;
    int first, last, add;
    for (int i=MATRIX_SIZE-1; i>=0; --i)
    {
        if (i&1)
        {
            first = MATRIX_SIZE - 1;
            last = -1;
            add = -1;
        }
 
        else
        {
            first = 0;
            last = MATRIX_SIZE;
            add = 1;
        }
 
        for (int j=first; j!=last; j+=add)
            matrix[i][j] = counter++;
    }
}
 
// Выводим содержимое матрицы на экран:
void show_matrix(int ** matrix)
{
    for (int i=0; i<MATRIX_SIZE; ++i)
    {
        for (int j=0; j<MATRIX_SIZE; ++j)
            std::cout << matrix[i][j] << "\t";
        std::cout << std::endl;
    }
}
0
alewka
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 36
14.10.2014, 15:57  [ТС] 3
Цитата Сообщение от gru74ik Посмотреть сообщение
void fill_matrix_snake(int **matrix);
void show_matrix(int **matrix);
что это значит, не запускается программа
0
Kuzia domovenok
2900 / 2471 / 637
Регистрация: 25.03.2012
Сообщений: 8,814
Записей в блоге: 1
Завершенные тесты: 1
14.10.2014, 16:02 4
Цитата Сообщение от alewka Посмотреть сообщение
что это значит, не запускается программа
а билдится или ошибки на этапе компиляции?
0
14.10.2014, 16:02
alewka
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 36
14.10.2014, 16:18  [ТС] 5
[Linker Error] Unresolved external 'fill_matrix_snake(int * *)' referenced from D:\С++\НОВАЯ ПАПКА (4)\UNIT1.OBJ
[Linker Error] Unresolved external 'show_matrix(int * *)' referenced from D:\С++\НОВАЯ ПАПКА (4)\UNIT1.OBJ
вот так пишет
0
Kuzia domovenok
2900 / 2471 / 637
Регистрация: 25.03.2012
Сообщений: 8,814
Записей в блоге: 1
Завершенные тесты: 1
14.10.2014, 16:35 6
alewka, а ты весь код грузчика скопировал? Все 73 строчки в твоей программе присутствуют?
1
alewka
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 36
14.10.2014, 16:44  [ТС] 7
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
#include <vcl.h>
#include <iostream.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
const int MATRIX_SIZE = 10;
 
void fill_matrix_snake(int **matrix);
void show_matrix(int **matrix);
 
int main()
{
    int ** matrix = new int * [MATRIX_SIZE];    // âûäåëÿåì ïàìÿòü
    for (int i=0; i<MATRIX_SIZE; ++i)         // äëÿ íàøåé ìàòðèöû
        matrix[i] = new int[MATRIX_SIZE];     // ðàçìåðîì 10õ10
 
    fill_matrix_snake(matrix);
    show_matrix(matrix);
 
    for (int i = 0; i<MATRIX_SIZE; i++)      //îñâîáîæäàåì ïàìÿòü
        delete [] matrix[i];
    delete [] matrix;
        return 0;
вот
0
Kuzia domovenok
2900 / 2471 / 637
Регистрация: 25.03.2012
Сообщений: 8,814
Записей в блоге: 1
Завершенные тесты: 1
14.10.2014, 16:50 8
alewka, и это, по-твоему, весь код? Глаза-то разуй, что тебе грузчик написал!
1
zss
Модератор
Эксперт С++
8903 / 7752 / 4789
Регистрация: 18.12.2011
Сообщений: 20,645
Завершенные тесты: 1
15.10.2014, 10:28 9
Строка 34
Цитата Сообщение от gru74ik Посмотреть сообщение
int first, last, add;
Какой глубокий смысл в этих глобальных переменных?
К тому же, они скрываются переменными с такими же именами в строке 42.
1
sourcerer
Модератор
Эксперт CЭксперт С++
4963 / 2149 / 326
Регистрация: 20.02.2013
Сообщений: 5,582
Записей в блоге: 24
Завершенные тесты: 1
15.10.2014, 18:17 10
Цитата Сообщение от zss Посмотреть сообщение
Строка 34
Просто ошибка. Описка. Ctrl+C/Ctrl+V туды её в качель.
Строки 34 не должно быть. Благодарю за внимательность.
1
VSergeyA
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 2
06.01.2017, 16:27 11
Цитата Сообщение от gru74ik Посмотреть сообщение
Голова змеи начинается с числа 100:
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
#include <iostream>
 
/*
Заполнить квадратную матрицу 10 на 10 змейкой:
91 92 93 94...98 99 100
90 89 88 87...83 82 81
.
.
.
11 12 13 14...18 19 20
10 9 8 7....3 2 1
*/
 
const int MATRIX_SIZE = 10;
 
void fill_matrix_snake(int ** matrix);
void show_matrix(int ** matrix);
 
int main()
{
    int ** matrix = new int * [MATRIX_SIZE];    // выделяем память
    for (int i=0; i<MATRIX_SIZE; ++i)         // для нашей матрицы
        matrix[i] = new int[MATRIX_SIZE];     // размером 10х10
 
    fill_matrix_snake(matrix);
    show_matrix(matrix);
 
    for (int i = 0; i<MATRIX_SIZE; ++i)   //освобождаем память
        delete [] matrix[i];
    delete [] matrix;
 
    return 0;
}
int first, last, add;
 
 
 
// Заполняем змейкой горизонтально справа налево сверху вниз:
void fill_matrix_snake(int ** matrix)
{
    int counter = 100;
    int first, last, add;
    for (int i=0; i<MATRIX_SIZE; ++i)
    {
        if (i&1)
        {
            first = 0;
            last = MATRIX_SIZE;
            add = 1;
        }
 
        else
        {
            first = MATRIX_SIZE - 1;
            last = -1;
            add = -1;
        }
 
        for (int j=first; j!=last; j+=add)
            matrix[i][j] = counter--;
    }
}
 
// Выводим содержимое матрицы на экран:
void show_matrix(int ** matrix)
{
    for (int i=0; i<MATRIX_SIZE; ++i)
    {
        for (int j=0; j<MATRIX_SIZE; ++j)
            std::cout << matrix[i][j] << "\t";
        std::cout << std::endl;
    }
}
Добавлено через 7 минут
Голова змеи начинается с числа 1:
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
#include <iostream>
 
/*
Заполнить квадратную матрицу 10 на 10 змейкой:
91 92 93 94...98 99 100
90 89 88 87...83 82 81
.
.
.
11 12 13 14...18 19 20
10 9 8 7....3 2 1
*/
 
const int MATRIX_SIZE = 10;
 
void fill_matrix_snake(int **matrix);
void show_matrix(int **matrix);
 
int main()
{
    int ** matrix = new int * [MATRIX_SIZE];    // выделяем память
    for (int i=0; i<MATRIX_SIZE; ++i)         // для нашей матрицы
        matrix[i] = new int[MATRIX_SIZE];     // размером 10х10
 
    fill_matrix_snake(matrix);
    show_matrix(matrix);
 
    for (int i = 0; i<MATRIX_SIZE; i++)      //освобождаем память
        delete [] matrix[i];
    delete [] matrix;
 
    return 0;
}
int first, last, add;
 
 
 
// Заполняем змейкой горизонтально справа налево снизу вверх:
void fill_matrix_snake(int ** matrix)
{
    int counter = 1;
    int first, last, add;
    for (int i=MATRIX_SIZE-1; i>=0; --i)
    {
        if (i&1)
        {
            first = MATRIX_SIZE - 1;
            last = -1;
            add = -1;
        }
 
        else
        {
            first = 0;
            last = MATRIX_SIZE;
            add = 1;
        }
 
        for (int j=first; j!=last; j+=add)
            matrix[i][j] = counter++;
    }
}
 
// Выводим содержимое матрицы на экран:
void show_matrix(int ** matrix)
{
    for (int i=0; i<MATRIX_SIZE; ++i)
    {
        for (int j=0; j<MATRIX_SIZE; ++j)
            std::cout << matrix[i][j] << "\t";
        std::cout << std::endl;
    }
}
Добрый день!Помогите, пожалуйста, изменить направление змеи)
сделать нужно так:
36 35 34 33 32 31
25 26 27 28 29 30
24 23 22 21 20 19
13 14 15 16 17 18
12 11 10 9 8 7
1 2 3 4 5 6
0
Fixer_84
1409 / 887 / 794
Регистрация: 30.04.2016
Сообщений: 3,046
06.01.2017, 16:44 12
alewka, здравствуйте! Я решил эту задачу так:

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
#include <iostream>
#include <algorithm>
 
using namespace std;
 
int main()
{
    const int N = 10;
    int p, A[N][N];
    p = 100;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            A[i][j] = p;
            p--;
        }
    }
    cout << "Искомая матрица:" << endl;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            if (!(i % 2))
                sort(A[i], A[i] + N);
            cout.width(2);
            cout << A[i][j] << " ";
        }
        cout << endl;
    }
    system("pause");
    return 0;
}
0
sourcerer
Модератор
Эксперт CЭксперт С++
4963 / 2149 / 326
Регистрация: 20.02.2013
Сообщений: 5,582
Записей в блоге: 24
Завершенные тесты: 1
06.01.2017, 16:52 13
Цитата Сообщение от VSergeyA Посмотреть сообщение
Помогите, пожалуйста, изменить направление змеи)
Делал, зная, что этот день придёт:
Заполнение матрицы разными змейками
.
.
0
dailydose
664 / 210 / 88
Регистрация: 21.07.2016
Сообщений: 1,036
Записей в блоге: 2
Завершенные тесты: 1
06.01.2017, 18:37 14
Цитата Сообщение от VSergeyA Посмотреть сообщение
Добрый день!Помогите, пожалуйста, изменить направление змеи)
сделать нужно так:
36 35 34 33 32 31
25 26 27 28 29 30
24 23 22 21 20 19
13 14 15 16 17 18
12 11 10 9 8 7
1 2 3 4 5 6
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
#include <iostream>
#include <vector>
#include <iomanip>
 
typedef std::vector< int > vRow;
typedef std::vector< vRow > vMatrix;
 
void PrintMatrix(const vMatrix &matrix)
{
    for (const vRow &row : matrix)
    {
        for (const int &el : row)
        {
            std::cout << std::setw(3) << el << ' ';
        }
        std::cout << std::endl;
    }
    std::cout << std::endl;
}
 
int main()
{
    const int ROWS = 6, COLS = 6;
    vMatrix matrix(ROWS, vRow(COLS));
 
 
    int value = 1;
    int row = 1;
 
    for (int end = ROWS * COLS; value < end; ++row)
    {
        // left TO right
        for (int i = 0; i < COLS; ++i)
        {
            matrix[ROWS - row][i] = value++;
        }
 
        if (row == ROWS) break;
 
        // right TO left
        ++row;
        for (int i = COLS - 1; i >= 0; --i)
        {
            matrix[ROWS - row][i] = value++;
        }
    }
 
    PrintMatrix(matrix);
    return 0;
}
0
gogaloh
Заблокирован
06.01.2017, 19:36 15
Выдает переполнение буфера
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    const int ten = 10;
    int arr[ten][ten];
    int sto = 100;
    for(int i = 1; i <= ten; i++)
    {
        if(i%2)
            {
                for( int j = ten; j > 0; j--)
                {
                    arr[i][j] = sto;
                    sto--;  
                }
            }
        else
            {
                for( int j = 1; j <= ten; j++)
                {               
                    arr[i][j] = sto;
                    sto--;
                }
            }
    }
 
    for(int i = 1; i <= 10; i++)
    {
        for(int j = 1; j <= 10; j++)
        {
            cout << arr[i][j] << '\t';
        }
        cout << endl;
    }
    system("pause");
    return 0;
}
подскажите пожалуйста где ошибка
0
sourcerer
Модератор
Эксперт CЭксперт С++
4963 / 2149 / 326
Регистрация: 20.02.2013
Сообщений: 5,582
Записей в блоге: 24
Завершенные тесты: 1
06.01.2017, 19:58 16
Цитата Сообщение от gogaloh Посмотреть сообщение
подскажите пожалуйста где ошибка
gogaloh, вместо <= в циклах пишите <. Индексы инициализируйте нулём, а не единицей.

Добавлено через 17 минут
gogaloh, вот:
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
/*
Заполнить квадратную матрицу 10 на 10 змейкой:
100 99 98 97 96 95 94 93 92 91
 81 82 83 84 85 86 87 88 89 90
 80 79 78 77 76 75 74 73 72 71
 61 62 63 64 65 66 67 68 69 70
 60 59 58 57 56 55 54 53 52 51
 41 42 43 44 45 46 47 48 49 50
 40 39 38 37 36 35 34 33 32 31
 21 22 23 24 25 26 27 28 29 30
 20 19 18 17 16 15 14 13 12 11
  1  2  3  4  5  6  7  8  9 10
*/
 
#include <iostream>
using namespace std;
 
int main()
{
    const int ten = 10;
    int arr[ten][ten];
    int sto = 100;
 
    for( int i = 0; i < ten; i++ )
    {
        if( i%2 )
            {
                for( int j = ten-1; j >= 0; j-- )
                {
                    arr[i][j] = sto--;
                }
            }
        else
            {
                for( int j = 0; j < ten; j++ )
                {
                    arr[i][j] = sto--;
                }
            }
    }
 
    for( int i = 0; i < ten; i++ )
    {
        for( int j = 0; j < ten; j++ )
        {
            cout << arr[i][j] << '\t';
        }
        cout << endl;
    }
 
    return 0;
}
0
06.01.2017, 19:58
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.01.2017, 19:58

Заполнить матрицу змейкой
Нужно заполнить квадратный двухмерный масив змейкой и вывести. 1 2 3 6 5 4 7 8 9

Заполнить матрицу змейкой
25 24 23 22 21 16 17 18 19 20 15 14 13 12 11 6 7 8 9 10 5 4 3 2 1 int main(){

Заполнить матрицу змейкой
Напишите программу, которая заполняет матрицу из N строк и M столбцов натуральными числами змейкой,...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.