Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Можно ли спомощью такого цикла все элементы массива вывести в обратном порядке? https://www.cyberforum.ru/ cpp-beginners/ thread621470.html
можно ли спомощью такого цикла все элементы массива вывести в обратном порядке? for(i=n;i=0;i--)
С одной cpp в другую C++
Господа, вот ниже два куска кода, как сделать так чтобы результат ARB_multitexture_supported приходил во вторую cppшку? В общем как ее туда правильно перекинуть? bool SetUpARB_multitexture() {...
C++ Win32 API, LRESULT CALLBACK, ошибки
Помогите исправить ошибки #include<windows.h> #include<commctrl.h> const IDM_Enable_Disable=0; const IDM_Exit=1; const IDM_About=2; const IDP_File=3; const IDP_Help=4; char* pMessages=
C++ Сортировать массивы по возрастанию и по убыванию. 1. Дано одномерный массив, состоящий из 20и элементов. Сортировать эти массивы по возрастанию и по убыванию. Например: Дано:1 4 7 2 5 8 3 6 9 10 15 13 12 14 11 В Итоге: 1 2 3 4 5 6 7 8 9 10 11... https://www.cyberforum.ru/ cpp-beginners/ thread621456.html
C++ Функции для работы с ole2 strorage https://www.cyberforum.ru/ cpp-beginners/ thread621455.html
Народ, кто-нибудь может подсказать функцию для работы с ole2 strorage, аналогичную StgOpenStorage(), которой можно было бы пользоваться под линуксом?
Сортировать по возрастанию(по алфавиту) C++
2. Символьный массив, состоящий из 15и символов. Сортировать их по возрастанию(по алфавиту). Например: Дано: ф а п р б г д . . . . В итоге:а б г д п р ф . . . .
Состояние системы питания ноутбука C++
Пишу консольную программку для определения состояния питания ноутбука (остаток заряда батареи, уровень заряда и т.п.). Но есть один вопрос. Хотелось бы узнать, с помощью какой функции можно...
C++ Перемножение матриц Доброго времени суток. Подскажите как разобраться с перемножением матриц, если есть 2 матрицы размерностью МхМ (М = 2000-5000), элементами которых являются в свою очередь матрицы NxN (N = 4); ... https://www.cyberforum.ru/ cpp-beginners/ thread621414.html
C++ cin.getline переброс через строку https://www.cyberforum.ru/ cpp-beginners/ thread621391.html
Использую функцию cin.getline,но происходит вот такое чуДооО см картинку внизу Код char *Names = new char; char *Familys = new char; char *Sexs = new char; char *Statust = new char;
C++ Угадать заданное число (1-100) Требуется за 7 шагов угадать заданное пользователем число, путем задачи вопросов. Что получилось: #include "std_lib_facilities.h"; int main() { setlocale(LC_CTYPE,"RUS"); setlocale(... https://www.cyberforum.ru/ cpp-beginners/ thread621385.html
2 / 2 / 0
Регистрация: 09.07.2012
Сообщений: 14
0

Заполнение змейкой

09.07.2012, 19:51. Просмотров 1752. Ответов 3
Метки (Все метки)

заполнение матрицы по диагонали змейкой по принципу
1 3 4 10
2 5 9 11
6 8 12 15
7 13 14 16.
Программа работает при вводе данных с клавиатуры. А мне нужно, чтобы можно было данные брать и из файла. не могу под файл сделать
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include <stdio.h>
#include <stdlib.h>
 
int **allocate_matrix(int nrow, int ncol)
{
    int **p, i;
 
    if ((p = 
        (int **) malloc(nrow * sizeof(int *))) == NULL)
            return NULL;
    for (i = 0; i < nrow; i++)
        if ((p[i] =
            (int *) malloc(ncol * sizeof(int))) == NULL) {
                while (--i >= 0)
                    free(p[i]);
                free(p);
                return NULL;
        }
    return p;
}
 
void free_matrix(int **m, int nrow)
{
    while (--nrow > 0)
        free(m[nrow]);
    free(m);
}
 
int **snake_fill(int **m, int ord,
    int direction, int (*gen)(void))
{
    int i, j;
    
    /*
     * direction == 1  means direction from  
     * the left bottom corner to the right top one.
     * ... == 0  means the opposite.
     * Function parameter of the same name sets
     * the direction to be started from.
     */
    i = j = 0;
    /* 
     * First cycle fills the first part which
     * includes diagonal:
     *
     *      * * * *
     *      * * *
     *      * *
     *      *
     */
    for (;;) {
        if (direction == 0) {
            do {                   
                m[i++][j--] = gen();
            } while (j >= 0);
            j++;
            direction ^= 1;
            if (i == ord)
                break;
        } else { /* from the right top to the left bottom */
            do { 
                m[i--][j++] = gen();
            } while (i >= 0);
            i++;
            direction ^= 1;
            if (j == ord)
                break;
        } /* end of else block */
    } /* end of cycle for */
 
    if (direction == 0) {
        i = 1;
        j = ord - 1;
    } else {
        i = ord - 1;
        j = 1;
    }
 
    /* 
     * Second cycle fills the second part:
     *
     *             *
     *          * *
     *       * * *
     */
    while (i != ord && j != ord) {
        if (direction == 0) {
            do {                   
                m[i++][j--] = gen();
            } while (i < ord);
            i--;
            j += 2;
        } else {
            do {
                m[i--][j++] = gen();
            } while (j < ord);
            j--;
            i += 2;
        } /* end of else block */
        direction ^= 1;
    } /* end of cycle for */
    return m;
}
 
int getnumber(void)
{
    int n;
 
    scanf("%d", &n);
    return n;
}
 
int main()
{
    int **m, ord, i, j;
 
    printf("enter a size of the square matrix:\n");
    scanf("%d", &ord);
    m = allocate_matrix(ord, ord);
 
    printf("enter the elements:\n");
    snake_fill(m, ord, 0, getnumber);
    
    putchar('\n');
    for (i = 0; i < ord; i++) {
        for (j = 0; j < ord; j++)
            printf("%2d ", m[i][j]);
        putchar('\n');
    }
    free_matrix(m, ord);
    return 0;
}


Вернуться к обсуждению:
Заполнение змейкой
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.07.2012, 19:51
Готовые ответы и решения:

Заполнение матрицы змейкой
Дано натуральное N (1&lt;=N&lt;=10). Заполнить матрицу размера N*N целыми числами 0, 1, 2, 3, …, N^2–1 в...

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

Заполнение массива змейкой
Нужно найти ошибку в коде Задача:вводится число N, нужно сформировать двумерный массив из n*n...

Заполнение массива змейкой
Пожалуйста, отредактируйте код, чтобы вывело так же (см. вложение): void print_array2(int** Arr,...

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