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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Fafle
34 / 34 / 4
Регистрация: 19.03.2010
Сообщений: 136
#1

Не понятна причина ошибки - C++

05.04.2011, 13:12. Просмотров 775. Ответов 3
Метки нет (Все метки)

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

Вроде все норм, но вылазит ошибка

main.cpp:55: error: jump to case label
main.cpp:32: error: crosses initialization of ‘int** arnew1’

Может я чего не понимаю?
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
#include <iostream>
using namespace std;
 
int main() {
    int size;
    int Case;
    int number;
    cout << "Введите размер изначальной матрици\n";
    cin >> size;
 
    int *New = new int[size];
    for (int i = 0; i < size; i++)
        New[i] = 2;
 
    int **ar = new int*[size];
    for (int i = 0; i < size; i++)
        ar[i] = new int[size];
 
    for (int row = 0; row < size; row++) {
        for (int col = 0; col < size; col++) {
            ar[row][col] = 1;
            cout << ar[row][col] << " ";
        }
        cout << endl;
    }
    cout << "Если хотите добавить строку введите 1, если столбец 2\n";
    cin >> Case;
    switch (Case) {
        case 1:
            cout << "Введите номер новой строки\n";
            cin >> number;
            int **arnew1 = new int*[size + 1];
            for (int i = 0; i < size + 1; i++)
                arnew1[i] = new int[size];
            for (int row = 0; row < size + 1; row++) {
                for (int col = 0; col < size; col++) {
                    if (row == number - 1)
                        arnew1[row][col] = New[col];
                    else if (row < number - 1)
                        arnew1[row][col] = ar[row][col];
                    else
                        arnew1[row][col] = ar[row - 1][col];
                }
            }
 
            cout << endl;
 
            for (int row = 0; row < size + 1; row++) {
                for (int col = 0; col < size; col++) {
                    cout << arnew1[row][col] << " ";
                }
                cout << endl;
            }
            break;
        case 2:
            cout << "Введите номер нового столбца\n";
            cin >> number;
            int **arnew2 = new int*[size];
            for (int i = 0; i < size; i++)
                arnew2[i] = new int[size + 1];
            for (int row = 0; row < size; row++) {
                for (int col = 0; col < size + 1; col++) {
                    if (col == number - 1)
                        arnew2[row][col] = New[row];
                    else if (col < number - 1)
                        arnew2[row][col] = ar[row][col];
                    else
                        arnew2[row][col] = ar[row][col - 1];
                }
            }
 
 
            cout << endl;
 
            for (int row = 0; row < size; row++) {
                for (int col = 0; col < size + 1; col++) {
                    cout << arnew2[row][col] << " ";
                }
                cout << endl;
            }
            break;
    }
    for (int i = 0; i < size; i++)
        delete[] ar[i];
    delete [] ar;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2011, 13:12
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не понятна причина ошибки (C++):

В чем причина ошибки? - C++
помогите разобраться почему выходит ошибка? #include &lt;iostream.h&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; ...

В чем причина ошибки? - C++
Код int main() { char arr; scanf(&quot;%s %s&quot;, &amp;arr, &amp;arr); printf(&quot;%s\n\n&quot;, arr);

В чем причина ошибки no match for? - C++
Видает ошибку no match for 'operator=' in 'C = RyadokIdentifier::operator+(const RyadokIdentifier&amp;)((*(const RyadokIdentifier*)(&amp; B)))' ...

В чем причина ошибки istream - C++
П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.

В чем причина ошибки extra qualification - C++
Видает ошибку extra qualification 'RyadokIdentifier::' on member 'Lowercase' в чем причина #include &lt;iostream&gt; #include &lt;string&gt; ...

В чем причина ошибки линковки в NetBeans (gcc 4.9)? - C++
Товарищи! помогите пожалуйста!! Подскажите новичку в С\С++ где собака зарылась: ОС Debian IDE NetBeans компилятор gcc 4.9 При...

3
Attenti_ON
9 / 9 / 1
Регистрация: 17.11.2009
Сообщений: 51
05.04.2011, 13:46 #2
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
#include <iostream>
using namespace std;
 
int main()
{
    int size;
    int Case;
    int number;
    cout << "Введите размер изначальной матрици\n";
    cin >> size;
 
    int *New = new int[size];
    for (int i = 0; i < size; i++)
        New[i] = 2;
 
    int **ar = new int*[size];
    for (int i = 0; i < size; i++)
        ar[i] = new int[size];
 
    for (int row = 0; row < size; row++) 
    {
        for (int col = 0; col < size; col++) 
        {
            ar[row][col] = 1;
            cout << ar[row][col] << " ";
        }
        cout << endl;
    }
    
    cout << "Если хотите добавить строку введите 1, если столбец 2\n";
    cin >> Case;
    
    switch (Case) 
    {
        case 1:
        {
            cout << "Введите номер новой строки\n";
            cin >> number;
            int **arnew1 = new int*[size + 1];
            for (int i = 0; i < size + 1; i++)
                arnew1[i] = new int[size];
            for (int row = 0; row < size + 1; row++) 
            {
                for (int col = 0; col < size; col++) 
                {
                    if (row == number - 1)
                        arnew1[row][col] = New[col];
                    else if (row < number - 1)
                        arnew1[row][col] = ar[row][col];
                    else
                        arnew1[row][col] = ar[row - 1][col];
                }
            }
 
            cout << endl;
 
            for (int row = 0; row < size + 1; row++) 
            {
                for (int col = 0; col < size; col++) 
                {
                    cout << arnew1[row][col] << " ";
                }
                cout << endl;
            }
            break;
        }
        case 2:
        {
            cout << "Введите номер нового столбца\n";
            cin >> number;
            int **arnew2 = new int*[size];
            for (int i = 0; i < size; i++)
                arnew2[i] = new int[size + 1];
            for (int row = 0; row < size; row++) 
            {
                for (int col = 0; col < size + 1; col++) 
                {
                    if (col == number - 1)
                        arnew2[row][col] = New[row];
                    else if (col < number - 1)
                        arnew2[row][col] = ar[row][col];
                    else
                        arnew2[row][col] = ar[row][col - 1];
                }
            }
 
 
            cout << endl;
 
            for (int row = 0; row < size; row++) 
            {
                for (int col = 0; col < size + 1; col++) 
                {
                    cout << arnew2[row][col] << " ";
                }
                cout << endl;
            }
            break;
        }
    }
    
    for (int i = 0; i < size; i++)
        delete[] ar[i];
    delete [] ar;
    return 0;
}
вот так не выдает ошибок. Там скобок немного не хватало
1
Fafle
34 / 34 / 4
Регистрация: 19.03.2010
Сообщений: 136
05.04.2011, 14:01  [ТС] #3
Аа, фак, в кэйсах, спс
0
prZzZ
Программист
112 / 92 / 5
Регистрация: 22.03.2011
Сообщений: 236
05.04.2011, 14:03 #4
1. Дело в том, что вы определяете локальные переменные в блоке case, а это запрещено - обход инициализации.
Рекомендации: Определяйте переменные либо выше switch, либо создайте искусственную область видимости из {скобок}.

2. Вы нигде не освобождаете память из под массивов arnew1 и arnew2.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2011, 14:03
Привет! Вот еще темы с ответами:

Какая может быть причина ошибки компилятора? - C++
Добрый день! Не понимаю, что у меня неправильно. Получаю следующий текст. Если добавить прототип копи конструктора в...

В чем причина ошибки компиляции в программе для определения площади треугольника? - C++
Вобщем, пишу программу на DevC++, которая по 3 точкам определяет площадь треугольника. Использую векторное произведение. При компиляции...

Причина ошибки [ilink32 Error] Error: Unable to perform link - C++
Когда сохранил программу и пытаюсь открыть ее снова то мне выкидывает ошибку Warning: Error detected (LME288) Error: Unable to...

В чем причина ошибки "error C2046: недопустимый вариант выбора"? - C++
Ошибка 1 error C2046: недопустимый вариант выбора c:\users\влад\documents\visual studio 2010\projects\dz 14.08.14\dz 14.08.14\link.cpp 45 ...


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

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

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