4 / 4 / 0
Регистрация: 01.06.2013
Сообщений: 153

Второй день не могу заменить объявление массива

03.10.2013, 18:44. Показов 678. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вот, собственно код программы с условием. прог откомпилирована и работает отлично. но преподаватель не принимает её,т.к. память под двумерный массив надо объявить динамически (new). Пробовал объявлять на том же месте таким способом
C++
1
2
3
4
5
6
7
8
int **a;
    a=new int*[ROWS];
    for (int i=0;i<ROWS;i++)
    {a[i]=new int[COLUMNS];}
    cout<<"vvedite elem matrici";
    for (int i=0;i<ROWS;i++)
        for (int j=0;j<COLUMNS;j++)
            cin>>a[i][j];
ничего не получается. все функции сбиваются и не работают с этим массивом. Как быть? как заменить статику на динамику?

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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
/*
стр 98 (100) зад 31
 
Определить, образуют ли элементы матрицы упорядоченную последовательность
при обходе матрицы: a) змейкой, b) спиралью
 
*/
 
#include <stdio.h>
 
#define ROWS 6
#define COLUMNS 5
 
static int a[ROWS][COLUMNS] = {
        { 1,  2,  3,  4,  5},
        {18, 19, 20, 21,  6},
        {17, 28, 29, 22,  7},
        {16, 27, 30, 23,  8},
        {15, 26, 25, 24,  9},
        {14, 13, 12, 11, 10}
};
 
 
static void print_matrix(void)
{
    int i, j;
    
    for(i = 0; i < ROWS; i++) {
        for (j = 0; j < COLUMNS; j++) {
            printf("%2d ", a[i][j]);
        }
        printf("\n");
    }
    printf("\n");
}
 
/*
  Функция проверки условия упорядоченности. Она вызывается
  для каждого элемента при обходе матрицы. Если возвращает 0, то
  упорядоченность не нарушена и можно идти дальше, если 1, то "стоп",
  упорядоченность нарушена
*/
 
static int next(int e)
{
    static int prev, state = 0;
    
    switch (state) {
        case 0: /* No previous elem */
            state = 1;
            break;
        case 1: /* Determine order type: ascending or descending */
            if (e < prev)
                state = 2;
            else if (e > prev)
                state = 3;
            break;
        case 2: /* Descending order */
            if (e > prev)
                return 1; /* Stop */
            break;
        case 3: /* Ascending order */
            if (e < prev)
                return 1; /* Stop */
            break;
        default:
            break;
    }
    prev = e;
    return 0; /* Go ahead */
}
 
 
/* Обходим матрицу спиралью */
 
static int spiral(void)
{
    int i, row1 = 0, row2 = ROWS - 1, col1 = 0, col2 = COLUMNS - 1;
    
    printf("Spiral: ");
    
    while (row1 <= row2) {
        /* Слева направо */
        for (i = col1; i <= col2; i++) {
            if (next(a[row1][i]))
                goto out_of_order;
            printf("%2d, ", a[row1][i]);
        }
    
        /* Сверху вниз */
        for (i = row1 + 1; i < row2; i++) {
            if (next(a[i][col2]))
                goto out_of_order;
            printf("%2d, ", a[i][col2]);
 
        }
    
        /* Справа налево */
        for (i = col2; i >= col1; i--) {
            if (next(a[row2][i]))
                goto out_of_order;
            printf("%2d, ", a[row2][i]);    
        }
        
        /* Снизу вверх */
        for (i = row2 - 1; i > row1; i--) {
            if (next(a[i][col1]))
                goto out_of_order;
            printf("%2d, ", a[i][col1]);
        }
        row1++;
        row2--;
        col1++;
        col2--;
    }
    printf("\n\n");
    return 0;
    
out_of_order:
    printf("Out of order\n");
    return -1;
}
 
/* Обходим матрицу змейкой */
 
static int snake(void)
{
    int i, j;
    
    printf("Snake: ");
    for (j = 0; j < COLUMNS; j++) {
        if (j & 1) {
            for (i = ROWS-1; i >= 0; i--) {
                printf("%2d, ", a[i][j]);
                if (next(a[i][j]))
                    goto out_of_order;
            }
        } else {
            for (i = 0; i < ROWS; i++) {
                printf("%2d, ", a[i][j]);
                if (next(a[i][j]))
                    goto out_of_order;
            }
        }
    }
    printf("\n\n");
    return 0;
    
out_of_order:
    printf("Out of order\n");
    return -1;
}
 
 
int main(void)
{
    print_matrix();
    snake();
    spiral();
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.10.2013, 18:44
Ответы с готовыми решениями:

Второй день не могу прописать рандомную переменную...
ребята, второй день не могу прописать рандомную переменную- $search = &quot;бмв&quot;; // Поисковый запрос нужно чтобы подставлялся...

Второй день не могу подключить, выдает ошибки
Здравствуйте! Подскажите как подключить базу MySQL к Datagridview Нашел несколько инструкций, вроде делаю все как нужно, все равно выдает...

На овощную базу привезли помидоры. В первый день 8 машин по а ящиков; во второй день 6 машин по в ящиков в каждой. В какой день помидоров привезли бол
На овощную базу привезли помидоры. В первый день 8 машин по а ящиков; во второй день 6 машин по в ящиков в каждой. В какой день помидоров...

8
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
03.10.2013, 18:52
Принцип выделения, а также освобождения памяти под одномерный и двумерный динамические массивы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
int main()
{
    int N, M;
    std::cin>> N>> M;
    int *A = new int[N]; // создаем массив A[N]
    delete []A; // очищаем память, выделенную под динамический массив
 
    int **B = new int*[N]; // создаем массив указателей размером N
    for (int i=0; i < N; i++)
        B[i] = new int[M]; // каждый указатель теперь ссылается на массив, размерностью M
 
    //очищаем память
    for (int i=0; i < N; i++)
        delete []B[i];
    delete []B;
    return 0;
}
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 19:03
Цитата Сообщение от kondusov Посмотреть сообщение
все функции сбиваются и не работают с этим массивом.
Разницы в работе не заметил.
Кликните здесь для просмотра всего текста
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#include <stdio.h>
#include <iostream>
using std::cout;
using std::cin;
 
#define ROWS 6
#define COLUMNS 5
 
int **a;
//static int a[ROWS][COLUMNS] = {
//        { 1,  2,  3,  4,  5},
//        {18, 19, 20, 21,  6},
//        {17, 28, 29, 22,  7},
//        {16, 27, 30, 23,  8},
//        {15, 26, 25, 24,  9},
//        {14, 13, 12, 11, 10}
//};
 
 
static void print_matrix(void)
{
    int i, j;
    
    for(i = 0; i < ROWS; i++) {
        for (j = 0; j < COLUMNS; j++) {
            printf("%2d ", a[i][j]);
        }
        printf("\n");
    }
    printf("\n");
}
 
/*
  Функция проверки условия упорядоченности. Она вызывается
  для каждого элемента при обходе матрицы. Если возвращает 0, то
  упорядоченность не нарушена и можно идти дальше, если 1, то "стоп",
  упорядоченность нарушена
*/
 
static int next(int e)
{
    static int prev, state = 0;
    
    switch (state) {
        case 0: /* No previous elem */
            state = 1;
            break;
        case 1: /* Determine order type: ascending or descending */
            if (e < prev)
                state = 2;
            else if (e > prev)
                state = 3;
            break;
        case 2: /* Descending order */
            if (e > prev)
                return 1; /* Stop */
            break;
        case 3: /* Ascending order */
            if (e < prev)
                return 1; /* Stop */
            break;
        default:
            break;
    }
    prev = e;
    return 0; /* Go ahead */
}
 
 
/* Обходим матрицу спиралью */
 
static int spiral(void)
{
    int i, row1 = 0, row2 = ROWS - 1, col1 = 0, col2 = COLUMNS - 1;
    
    printf("Spiral: ");
    
    while (row1 <= row2) {
        /* Слева направо */
        for (i = col1; i <= col2; i++) {
            if (next(a[row1][i]))
                goto out_of_order;
            printf("%2d, ", a[row1][i]);
        }
    
        /* Сверху вниз */
        for (i = row1 + 1; i < row2; i++) {
            if (next(a[i][col2]))
                goto out_of_order;
            printf("%2d, ", a[i][col2]);
 
        }
    
        /* Справа налево */
        for (i = col2; i >= col1; i--) {
            if (next(a[row2][i]))
                goto out_of_order;
            printf("%2d, ", a[row2][i]);    
        }
        
        /* Снизу вверх */
        for (i = row2 - 1; i > row1; i--) {
            if (next(a[i][col1]))
                goto out_of_order;
            printf("%2d, ", a[i][col1]);
        }
        row1++;
        row2--;
        col1++;
        col2--;
    }
    printf("\n\n");
    return 0;
    
out_of_order:
    printf("Out of order\n");
    return -1;
}
 
/* Обходим матрицу змейкой */
 
static int snake(void)
{
    int i, j;
    
    printf("Snake: ");
    for (j = 0; j < COLUMNS; j++) {
        if (j & 1) {
            for (i = ROWS-1; i >= 0; i--) {
                printf("%2d, ", a[i][j]);
                if (next(a[i][j]))
                    goto out_of_order;
            }
        } else {
            for (i = 0; i < ROWS; i++) {
                printf("%2d, ", a[i][j]);
                if (next(a[i][j]))
                    goto out_of_order;
            }
        }
    }
    printf("\n\n");
    return 0;
    
out_of_order:
    printf("Out of order\n");
    return -1;
}
 
 
int main(void)
{
    
    a = new int*[ROWS];
    for (int i = 0; i < ROWS; i++)
    {
        a[i] = new int[COLUMNS];
    }
    cout<<"vvedite elem matrici";
    for (int i = 0; i < ROWS; i++)
        for (int j = 0; j < COLUMNS; j++)
            cin >> a[i][j];
    
    cout << '\n';
    
    print_matrix();
    snake();
    spiral();
 
    for (int i = 0; i < ROWS; i++)
        delete [] a[i];
    delete [] a;
 
 
    return 0;
}
Миниатюры
Второй день не могу заменить объявление массива  
1
9 / 9 / 0
Регистрация: 13.07.2012
Сообщений: 127
03.10.2013, 19:07
Добрый вечер, Я так думаю(точнее я так сделал и у меня она запускает и что то выдает, Нет, не ошибку) нужно в начале код удалит описания статического массива, и описать указатель на 2-ч мерный массив. Таким вот образом,
C++
1
int **a;
. А само создания и запись в массив сделать в функций main. Вот код
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
// zad_1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
 
/*
стр 98 (100) зад 31
 
Определить, образуют ли элементы матрицы упорядоченную последовательность
при обходе матрицы: a) змейкой, b) спиралью
 
*/
 
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
 
#define ROWS 6
#define COLUMNS 5
int **a; 
 
static void print_matrix(void)
{
    int i, j;
    
    for(i = 0; i < ROWS; i++) {
        for (j = 0; j < COLUMNS; j++) {
            printf("%2d ", a[i][j]);
        }
        printf("\n");
    }
    printf("\n");
}
 
/*
  Функция проверки условия упорядоченности. Она вызывается
  для каждого элемента при обходе матрицы. Если возвращает 0, то
  упорядоченность не нарушена и можно идти дальше, если 1, то "стоп",
  упорядоченность нарушена
*/
 
static int next(int e)
{
    static int prev, state = 0;
    
    switch (state) {
        case 0: /* No previous elem */
            state = 1;
            break;
        case 1: /* Determine order type: ascending or descending */
            if (e < prev)
                state = 2;
            else if (e > prev)
                state = 3;
            break;
        case 2: /* Descending order */
            if (e > prev)
                return 1; /* Stop */
            break;
        case 3: /* Ascending order */
            if (e < prev)
                return 1; /* Stop */
            break;
        default:
            break;
    }
    prev = e;
    return 0; /* Go ahead */
}
 
 
/* Обходим матрицу спиралью */
 
static int spiral(void)
{
    int i, row1 = 0, row2 = ROWS - 1, col1 = 0, col2 = COLUMNS - 1;
    
    printf("Spiral: ");
    
    while (row1 <= row2) {
        /* Слева направо */
        for (i = col1; i <= col2; i++) {
            if (next(a[row1][i]))
                goto out_of_order;
            printf("%2d, ", a[row1][i]);
        }
    
        /* Сверху вниз */
        for (i = row1 + 1; i < row2; i++) {
            if (next(a[i][col2]))
                goto out_of_order;
            printf("%2d, ", a[i][col2]);
 
        }
    
        /* Справа налево */
        for (i = col2; i >= col1; i--) {
            if (next(a[row2][i]))
                goto out_of_order;
            printf("%2d, ", a[row2][i]);    
        }
        
        /* Снизу вверх */
        for (i = row2 - 1; i > row1; i--) {
            if (next(a[i][col1]))
                goto out_of_order;
            printf("%2d, ", a[i][col1]);
        }
        row1++;
        row2--;
        col1++;
        col2--;
    }
    printf("\n\n");
    return 0;
    
out_of_order:
    printf("Out of order\n");
    return -1;
}
 
/* Обходим матрицу змейкой */
 
static int snake(void)
{
    int i, j;
    
    printf("Snake: ");
    for (j = 0; j < COLUMNS; j++) {
        if (j & 1) {
            for (i = ROWS-1; i >= 0; i--) {
                printf("%2d, ", a[i][j]);
                if (next(a[i][j]))
                    goto out_of_order;
            }
        } else {
            for (i = 0; i < ROWS; i++) {
                printf("%2d, ", a[i][j]);
                if (next(a[i][j]))
                    goto out_of_order;
            }
        }
    }
    printf("\n\n");
    return 0;
    
out_of_order:
    printf("Out of order\n");
    return -1;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    a=new int*[ROWS];
    for (int i=0;i<ROWS;i++)
    {a[i]=new int[COLUMNS];}
    std::cout<<"vvedite elem matrici";
    for (int i=0;i<ROWS;i++)
        for (int j=0;j<COLUMNS;j++)
            a[i][j]=rand()%10;
    print_matrix();
    snake();
    spiral();
    system("pause");
    return 0;
}
1
4 / 4 / 0
Регистрация: 01.06.2013
Сообщений: 153
03.10.2013, 19:18  [ТС]
делаю всё как написано у Вас. выползает куча ошибок.
что неправильного в этом коде?

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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
/*
стр 98 (100) зад 31
 
Определить, образуют ли элементы матрицы упорядоченную последовательность
при обходе матрицы: a) змейкой, b) спиралью
 
*/
 
#include <stdio.h>
#include <iostream>
using namespace std;
 
#define ROWS 6
#define COLUMNS 5
 
int **a;
a=new int*[ROWS];
for(int i=0;i<ROWS;i++)
    a[i]=new int[COLUMNS];
for (int i=0;i<2;i++)
    for (int j=0;j<2;j++)
        cin>>a[i][j];
 
 
static void print_matrix(void)
{
    int i, j;
    
    for(i = 0; i < ROWS; i++) {
        for (j = 0; j < COLUMNS; j++) {
            printf("%2d ", a[i][j]);
        }
        printf("\n");
    }
    printf("\n");
}
 
/*
  Функция проверки условия упорядоченности. Она вызывается
  для каждого элемента при обходе матрицы. Если возвращает 0, то
  упорядоченность не нарушена и можно идти дальше, если 1, то "стоп",
  упорядоченность нарушена
*/
 
static int next(int e)
{
    static int prev, state = 0;
    
    switch (state) {
        case 0: /* No previous elem */
            state = 1;
            break;
        case 1: /* Determine order type: ascending or descending */
            if (e < prev)
                state = 2;
            else if (e > prev)
                state = 3;
            break;
        case 2: /* Descending order */
            if (e > prev)
                return 1; /* Stop */
            break;
        case 3: /* Ascending order */
            if (e < prev)
                return 1; /* Stop */
            break;
        default:
            break;
    }
    prev = e;
    return 0; /* Go ahead */
}
 
 
/* Обходим матрицу спиралью */
 
static int spiral(void)
{
    int i, row1 = 0, row2 = ROWS - 1, col1 = 0, col2 = COLUMNS - 1;
    
    printf("Spiral: ");
    
    while (row1 <= row2) {
        /* Слева направо */
        for (i = col1; i <= col2; i++) {
            if (next(a[row1][i]))
                goto out_of_order;
            printf("%2d, ", a[row1][i]);
        }
    
        /* Сверху вниз */
        for (i = row1 + 1; i < row2; i++) {
            if (next(a[i][col2]))
                goto out_of_order;
            printf("%2d, ", a[i][col2]);
 
        }
    
        /* Справа налево */
        for (i = col2; i >= col1; i--) {
            if (next(a[row2][i]))
                goto out_of_order;
            printf("%2d, ", a[row2][i]);    
        }
        
        /* Снизу вверх */
        for (i = row2 - 1; i > row1; i--) {
            if (next(a[i][col1]))
                goto out_of_order;
            printf("%2d, ", a[i][col1]);
        }
        row1++;
        row2--;
        col1++;
        col2--;
    }
    printf("\n\n");
    return 0;
    
out_of_order:
    printf("Out of order\n");
    return -1;
}
 
/* Обходим матрицу змейкой */
 
static int snake(void)
{
    int i, j;
    
    printf("Snake: ");
    for (j = 0; j < COLUMNS; j++) {
        if (j & 1) {
            for (i = ROWS-1; i >= 0; i--) {
                printf("%2d, ", a[i][j]);
                if (next(a[i][j]))
                    goto out_of_order;
            }
        } else {
            for (i = 0; i < ROWS; i++) {
                printf("%2d, ", a[i][j]);
                if (next(a[i][j]))
                    goto out_of_order;
            }
        }
    }
    printf("\n\n");
    return 0;
    
out_of_order:
    printf("Out of order\n");
    return -1;
}
 
 
int main(void)
{
    print_matrix();
    snake();
    spiral();
    return 0;
}
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 19:22
Цитата Сообщение от kondusov Посмотреть сообщение
делаю всё как написано у Вас.
У кого?
0
9 / 9 / 0
Регистрация: 13.07.2012
Сообщений: 127
03.10.2013, 19:23
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
/*
стр 98 (100) зад 31
 
Определить, образуют ли элементы матрицы упорядоченную последовательность
при обходе матрицы: a) змейкой, b) спиралью
 
*/
 
#include <stdio.h>
#include <iostream>
using namespace std;
 
#define ROWS 6
#define COLUMNS 5
 
int **a;
 
 
static void print_matrix(void)
{
    int i, j;
    
    for(i = 0; i < ROWS; i++) {
        for (j = 0; j < COLUMNS; j++) {
            printf("%2d ", a[i][j]);
        }
        printf("\n");
    }
    printf("\n");
}
 
/*
  Функция проверки условия упорядоченности. Она вызывается
  для каждого элемента при обходе матрицы. Если возвращает 0, то
  упорядоченность не нарушена и можно идти дальше, если 1, то "стоп",
  упорядоченность нарушена
*/
 
static int next(int e)
{
    static int prev, state = 0;
    
    switch (state) {
        case 0: /* No previous elem */
            state = 1;
            break;
        case 1: /* Determine order type: ascending or descending */
            if (e < prev)
                state = 2;
            else if (e > prev)
                state = 3;
            break;
        case 2: /* Descending order */
            if (e > prev)
                return 1; /* Stop */
            break;
        case 3: /* Ascending order */
            if (e < prev)
                return 1; /* Stop */
            break;
        default:
            break;
    }
    prev = e;
    return 0; /* Go ahead */
}
 
 
/* Обходим матрицу спиралью */
 
static int spiral(void)
{
    int i, row1 = 0, row2 = ROWS - 1, col1 = 0, col2 = COLUMNS - 1;
    
    printf("Spiral: ");
    
    while (row1 <= row2) {
        /* Слева направо */
        for (i = col1; i <= col2; i++) {
            if (next(a[row1][i]))
                goto out_of_order;
            printf("%2d, ", a[row1][i]);
        }
    
        /* Сверху вниз */
        for (i = row1 + 1; i < row2; i++) {
            if (next(a[i][col2]))
                goto out_of_order;
            printf("%2d, ", a[i][col2]);
 
        }
    
        /* Справа налево */
        for (i = col2; i >= col1; i--) {
            if (next(a[row2][i]))
                goto out_of_order;
            printf("%2d, ", a[row2][i]);    
        }
        
        /* Снизу вверх */
        for (i = row2 - 1; i > row1; i--) {
            if (next(a[i][col1]))
                goto out_of_order;
            printf("%2d, ", a[i][col1]);
        }
        row1++;
        row2--;
        col1++;
        col2--;
    }
    printf("\n\n");
    return 0;
    
out_of_order:
    printf("Out of order\n");
    return -1;
}
 
/* Обходим матрицу змейкой */
 
static int snake(void)
{
    int i, j;
    
    printf("Snake: ");
    for (j = 0; j < COLUMNS; j++) {
        if (j & 1) {
            for (i = ROWS-1; i >= 0; i--) {
                printf("%2d, ", a[i][j]);
                if (next(a[i][j]))
                    goto out_of_order;
            }
        } else {
            for (i = 0; i < ROWS; i++) {
                printf("%2d, ", a[i][j]);
                if (next(a[i][j]))
                    goto out_of_order;
            }
        }
    }
    printf("\n\n");
    return 0;
    
out_of_order:
    printf("Out of order\n");
    return -1;
}
 
 
int main(void)
{
    a=new int*[ROWS];
    for(int i=0;i<ROWS;i++)
        a[i]=new int[COLUMNS];
    for (int i=0;i<ROWS;i++)
        for (int j=0;j<COLUMNS;j++)
            cin>>a[i][j];
    print_matrix();
    snake();
    spiral();
    return 0;
}
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 19:24
Цитата Сообщение от kondusov Посмотреть сообщение
что неправильного в этом коде?
Это нужно в какой-либо функции делать, а не в глобальной области:
C++
1
2
3
4
5
6
a=new int*[ROWS];
for(int i=0;i<ROWS;i++)
    a[i]=new int[COLUMNS];
for (int i=0;i<2;i++)
    for (int j=0;j<2;j++)
        cin>>a[i][j];
И откуда двойки взялись?
0
4 / 4 / 0
Регистрация: 01.06.2013
Сообщений: 153
03.10.2013, 19:24  [ТС]
извиняюсь, разобрался. ПОМОГ СПОСОБ ОПРЕДЕЛЕНИЯ **а сначала и потом в MAIN выделение памятии заполнение. ОГРОМНОЕ СПАСИБО)
я так счастлив теперь)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.10.2013, 19:24
Помогаю со студенческими работами здесь

Второй отрицательный элемент массива заменить минимальным
Дан одномерный массив. Нужно второй отрицательный элемент заменить минимальным. Помогите пожалуйста решить эту задачку! Программирую...

Каждый второй отрицательный элемент одномерного массива заменить на 0
Привет, помоги мне пожалуйста, только одну функцию написать, спасибо огромное заранее :cry:

Заменить второй элемент массива, кратный 2, числом 1000
доброго времени суток, подскажите как можно осуществить сие задание? 1. Заменить второй элемент массива, кратный 2, числом 1000. ...

Заменить отрицательные элементы второй половины массива на количество положительных элементов первой половины массива
Напишите программу, которая в одномерном массиве заменяет все отрицательные элементы второй половины массива на количество положительных...

Заменить значения всех элементов второй строки массива на число 5. пятого столбца массива на число 10.
Дан двухмерный массив. а) Заменить значения всех элементов второй строки массива на число 5. 6) Заменить значения всех элементов...


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

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

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru