Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для Fafle
34 / 34 / 9
Регистрация: 19.03.2010
Сообщений: 136

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

05.04.2011, 13:12. Показов 1384. Ответов 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.04.2011, 13:12
Ответы с готовыми решениями:

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

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

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

3
9 / 9 / 3
Регистрация: 17.11.2009
Сообщений: 51
05.04.2011, 13:46
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 / 9
Регистрация: 19.03.2010
Сообщений: 136
05.04.2011, 14:01  [ТС]
Аа, фак, в кэйсах, спс
0
Программист
 Аватар для prZzZ
119 / 97 / 11
Регистрация: 22.03.2011
Сообщений: 244
05.04.2011, 14:03
1. Дело в том, что вы определяете локальные переменные в блоке case, а это запрещено - обход инициализации.
Рекомендации: Определяйте переменные либо выше switch, либо создайте искусственную область видимости из {скобок}.

2. Вы нигде не освобождаете память из под массивов arnew1 и arnew2.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.04.2011, 14:03
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru