0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 36
1

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

14.10.2014, 04:22. Показов 6572. Ответов 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.10.2014, 04:22
Ответы с готовыми решениями:

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

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

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

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

15
Модератор
Эксперт CЭксперт С++
5279 / 2366 / 342
Регистрация: 20.02.2013
Сообщений: 5,766
Записей в блоге: 20
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
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
4055 / 3309 / 924
Регистрация: 25.03.2012
Сообщений: 12,451
Записей в блоге: 1
14.10.2014, 16:02 4
Цитата Сообщение от alewka Посмотреть сообщение
что это значит, не запускается программа
а билдится или ошибки на этапе компиляции?
0
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
4055 / 3309 / 924
Регистрация: 25.03.2012
Сообщений: 12,451
Записей в блоге: 1
14.10.2014, 16:35 6
alewka, а ты весь код грузчика скопировал? Все 73 строчки в твоей программе присутствуют?
1
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
4055 / 3309 / 924
Регистрация: 25.03.2012
Сообщений: 12,451
Записей в блоге: 1
14.10.2014, 16:50 8
alewka, и это, по-твоему, весь код? Глаза-то разуй, что тебе грузчик написал!
1
Модератор
Эксперт С++
13317 / 10623 / 6346
Регистрация: 18.12.2011
Сообщений: 28,369
15.10.2014, 10:28 9
Строка 34
Цитата Сообщение от gru74ik Посмотреть сообщение
int first, last, add;
Какой глубокий смысл в этих глобальных переменных?
К тому же, они скрываются переменными с такими же именами в строке 42.
1
Модератор
Эксперт CЭксперт С++
5279 / 2366 / 342
Регистрация: 20.02.2013
Сообщений: 5,766
Записей в блоге: 20
15.10.2014, 18:17 10
Цитата Сообщение от zss Посмотреть сообщение
Строка 34
Просто ошибка. Описка. Ctrl+C/Ctrl+V туды её в качель.
Строки 34 не должно быть. Благодарю за внимательность.
1
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
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
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
Модератор
Эксперт CЭксперт С++
5279 / 2366 / 342
Регистрация: 20.02.2013
Сообщений: 5,766
Записей в блоге: 20
06.01.2017, 16:52 13
Цитата Сообщение от VSergeyA Посмотреть сообщение
Помогите, пожалуйста, изменить направление змеи)
Делал, зная, что этот день придёт:
Заполнение матрицы разными змейками
.
.
0
671 / 217 / 88
Регистрация: 21.07.2016
Сообщений: 1,036
Записей в блоге: 2
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
20 / 27 / 1
Регистрация: 14.03.2015
Сообщений: 792
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
Модератор
Эксперт CЭксперт С++
5279 / 2366 / 342
Регистрация: 20.02.2013
Сообщений: 5,766
Записей в блоге: 20
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.01.2017, 19:58
Помогаю со студенческими работами здесь

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

Заполнить квадратную матрицу змейкой
Собственно задание на фотографии. Кому не сложно, помогите написать код. Раньше такое на...

Заполнить квадратную матрицу змейкой
Заполнить квадратную матрицу А (на примере А) 1 2 3 4 5 10 9 8 7 6 11 12 13 14 15 20 19 18 17...

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

Заполнить порядковыми номерами квадратную матрицу змейкой по диагонали
Заполнить порядковыминомерами квадратную матрицу N´N змейкой по диагонали, то есть в...

Заполнить матрицу змейкой.
Помогите пожалуйста ) Заполнить матрицу 6 на 6 числами от 1 до 36 в порядке как показанно на...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru