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

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

Восстановить пароль Регистрация
 
kondusov
2 / 2 / 0
Регистрация: 01.06.2013
Сообщений: 152
03.10.2013, 18:44     Второй день не могу заменить объявление массива #1
вот, собственно код программы с условием. прог откомпилирована и работает отлично. но преподаватель не принимает её,т.к. память под двумерный массив надо объявить динамически (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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2013, 18:44     Второй день не могу заменить объявление массива
Посмотрите здесь:

C++ Объявление массива
Объявление массива C++
C++ Написать программу по C++. Уже второй день голову ломаю...
C++ Я второй день как учу С++ (найти ошибки в коде)
C++ объявление массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
03.10.2013, 18:52     Второй день не могу заменить объявление массива #2
Принцип выделения, а также освобождения памяти под одномерный и двумерный динамические массивы:
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;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 19:03     Второй день не могу заменить объявление массива #3
Цитата Сообщение от 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;
}
Миниатюры
Второй день не могу заменить объявление массива  
met4ka
8 / 8 / 1
Регистрация: 13.07.2012
Сообщений: 102
03.10.2013, 19:07     Второй день не могу заменить объявление массива #4
Добрый вечер, Я так думаю(точнее я так сделал и у меня она запускает и что то выдает, Нет, не ошибку) нужно в начале код удалит описания статического массива, и описать указатель на 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;
}
kondusov
2 / 2 / 0
Регистрация: 01.06.2013
Сообщений: 152
03.10.2013, 19:18  [ТС]     Второй день не могу заменить объявление массива #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
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;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 19:22     Второй день не могу заменить объявление массива #6
Цитата Сообщение от kondusov Посмотреть сообщение
делаю всё как написано у Вас.
У кого?
met4ka
8 / 8 / 1
Регистрация: 13.07.2012
Сообщений: 102
03.10.2013, 19:23     Второй день не могу заменить объявление массива #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
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;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 19:24     Второй день не могу заменить объявление массива #8
Цитата Сообщение от 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];
И откуда двойки взялись?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2013, 19:24     Второй день не могу заменить объявление массива
Еще ссылки по теме:

C++ Найти второй самый большой элемент массива и второй самый маленький элемент массива
C++ Заменить последний положительный элемент массива на второй элемент массива
C++ Заменить последний положительный элемент одномерного массива на второй элемент массива

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

Или воспользуйтесь поиском по форуму:
kondusov
2 / 2 / 0
Регистрация: 01.06.2013
Сообщений: 152
03.10.2013, 19:24  [ТС]     Второй день не могу заменить объявление массива #9
извиняюсь, разобрался. ПОМОГ СПОСОБ ОПРЕДЕЛЕНИЯ **а сначала и потом в MAIN выделение памятии заполнение. ОГРОМНОЕ СПАСИБО)
я так счастлив теперь)
Yandex
Объявления
03.10.2013, 19:24     Второй день не могу заменить объявление массива
Ответ Создать тему
Опции темы

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