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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В чем ошибка? http://www.cyberforum.ru/cpp-beginners/thread968274.html
#include <cstdlib> #include <iostream> using namespace std; struct Time { int h; int m; };
C++ Дан текст, содержащий 30 символов. Подсчитать количество вхождений символов А и Б. Ребят , помогите плиз , послезавтра экзамен , вот нашел возможные задание , может кто подсказать , или показать решения ? Язык : С++/ паскаль. Заранее спасибо. №1 Дан текст, содержащий 30... http://www.cyberforum.ru/cpp-beginners/thread968269.html
C++ Нужно оптимизировать код
Вобщем код не принемает сайт, немного нагружает и по времени не проходит задание Август и Беатриса играют в игру. Август загадал натуральное число от 1 до n. Беатриса пытается угадать это число,...
C++ Странная ошыбка
Всём привет Есть такая проблема: при использовании qsort(&c, c.size(), sizeof(int), compare) Кидает ексепшен, почёму понять не могу. Вот весь код: #include <iostream> #include <vector> int...
C++ Работа со структурой данных, чтение/сохранение во внешний файл http://www.cyberforum.ru/cpp-beginners/thread968244.html
помогите разобраться с задачкой!! {Написать программу, представляющую собой простейшую систему для управления данными. Исходные данные для программы хранятся в текстовом файле в виде строк. Для...
C++ В числе зачеркнули первую справа цифру и приписали ее слева - вывести полученное число #include <iostream> #include <stdio.h> #include <math.h> #include <conio.h> int main(int argc, char** argv) { float d,c; int b,a; printf ("vvedite trhznachnoe chislo "); подробнее

Показать сообщение отдельно
kondusov
3 / 3 / 0
Регистрация: 01.06.2013
Сообщений: 153

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

03.10.2013, 18:44. Просмотров 342. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru