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

Поясните ошибку, связанную с константой. - C++

Восстановить пароль Регистрация
 
wolf1396
5 / 5 / 0
Регистрация: 07.05.2013
Сообщений: 192
04.07.2013, 06:31     Поясните ошибку, связанную с константой. #1
Делаю в VS 2012
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
int main( int argc, char** argv ) 
{
    const int n=5;
    const int m=5;
    int i,j;
    int a[n], b[m], *c = new int[n+m];
    cout << "vvedite mas A: " << endl;
    for (i=0; i<n; i++)
    {
        cin >> a[i];
    }
    cout << "vvedite mas B: " << endl;
    for (j=0; j<m; j++)
    {
        cin >> b[j];
    }
    for (int i=0; i<n; i++) 
    {                       
       int c[i]=a[i];
       c[i+n]=b[i]; 
    }
    for(int i=0; i < n; i++)
    {
        for(int j = n-1; j > i; j-- )
        {
            if ( a[j-1] > b[i] )
            {      
                int temp=a[j-1]; 
                a[j-1]=b[i]; 
                b[i]=temp; 
            }
        }        
    }
    cout << " massiv C: " << endl;
    for (i=0; i<n+m; i++)
    {
        cout << c[i];
    }
    delete [] c;
    return 0;
}
при компиляции ошибка в строке *int c[i]=a[i]* i-должна быть константой

в чем проблема?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
04.07.2013, 06:45     Поясните ошибку, связанную с константой. #2
C++
1
int c[i]=a[i];
это вообще что ты хотел этим сказать?
Может лучше так
C++
1
c[i]=a[i];
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
04.07.2013, 06:47     Поясните ошибку, связанную с константой. #3
Цитата Сообщение от wolf1396 Посмотреть сообщение
в чем проблема?
думаю вот в этом
C++
1
*c = new int[n+m];
я тут понакалдовал, незнаю подойдет ли тебе но работает
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
#include <iostream>
using namespace std;
 
 
int main( int argc, char** argv ) 
{
    const int n=5;
    const int m=5;
    int i,j;
 
 
    int c[10]; // то что я изменил
 
 
    int a[n], b[m];
    cout << "vvedite mas A: " << endl;
    for (i=0; i<n; i++)
    {
        cin >> a[i];
    }
    cout << "vvedite mas B: " << endl;
    for (j=0; j<m; j++)
    {
        cin >> b[j];
    }
    for (int i=0; i<n; i++) 
    {                       
       c[i]=a[i];
       c[i+n]=b[i]; 
    }
    for(int i=0; i < n; i++)
    {
        for(int j = n-1; j > i; j-- )
        {
            if ( a[j-1] > b[i] )
            {      
                int temp=a[j-1]; 
                a[j-1]=b[i]; 
                b[i]=temp; 
            }
        }        
    }
    cout << " massiv C: " << endl;
    for (i=0; i<n+m; i++)
    {
        cout << c[i];
    }
    return 0;
}
wolf1396
5 / 5 / 0
Регистрация: 07.05.2013
Сообщений: 192
04.07.2013, 06:52  [ТС]     Поясните ошибку, связанную с константой. #4
Кликните здесь для просмотра всего текста

Цитата Сообщение от Нету имени Посмотреть сообщение
думаю вот в этом
C++
1
*c = new int[n+m];
я тут понакалдовал, незнаю подойдет ли тебе но работает
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
#include <iostream>
using namespace std;
 
 
int main( int argc, char** argv ) 
{
    const int n=5;
    const int m=5;
    int i,j;
 
 
    int c[10]; // то что я изменил
 
 
    int a[n], b[m];
    cout << "vvedite mas A: " << endl;
    for (i=0; i<n; i++)
    {
        cin >> a[i];
    }
    cout << "vvedite mas B: " << endl;
    for (j=0; j<m; j++)
    {
        cin >> b[j];
    }
    for (int i=0; i<n; i++) 
    {                       
       c[i]=a[i];
       c[i+n]=b[i]; 
    }
    for(int i=0; i < n; i++)
    {
        for(int j = n-1; j > i; j-- )
        {
            if ( a[j-1] > b[i] )
            {      
                int temp=a[j-1]; 
                a[j-1]=b[i]; 
                b[i]=temp; 
            }
        }        
    }
    cout << " massiv C: " << endl;
    for (i=0; i<n+m; i++)
    {
        cout << c[i];
    }
    return 0;
}


Спасибо
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
04.07.2013, 07:31     Поясните ошибку, связанную с константой. #5
Цитата Сообщение от wolf1396 Посмотреть сообщение
int c[i]=a[i];
этим ты объявил массив и присвоил ему значение элемента другого массива
естественно компилятор сошел с ума
Цитата Сообщение от wolf1396 Посмотреть сообщение
int i,j;
..........................
for (i=0; i<n; i++)
.........................
for (j=0; j<m; j++)
* * {
Цитата Сообщение от wolf1396 Посмотреть сообщение
for (int i=0; i<n; i++)
Цитата Сообщение от wolf1396 Посмотреть сообщение
for(int i=0; i < n; i++)
* * {
* * * * for(int j = n-1; j > i; j-- )
"Вы, уж, Абрам Моисеевич, определитесь, или штаны оденьте или крестик снимите"(с)
зачем два разных подхода к объявлению i, j??
так в последнем цикле у тебя будет ДВЕ i и ДВЕ j

Добавлено через 4 минуты
Цитата Сообщение от Нету имени Посмотреть сообщение
думаю вот в этом
C++
1
*c = new int[n+m];
и чем не нравится динамическое выделение памяти
l_lenskaya
 Аватар для l_lenskaya
10 / 10 / 2
Регистрация: 02.07.2013
Сообщений: 52
04.07.2013, 07:32     Поясните ошибку, связанную с константой. #6
C++
1
int c[i]=a[i];
это мы в этой строке судя по коду объявили целочисленный массив размером i (которая должна быть const int) да еще присвоили массиву! значение элемента a[i].
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
04.07.2013, 07:34     Поясните ошибку, связанную с константой. #7
wolf1396, Нету имени, а теперь попробуйте поменять
C++
1
2
const int n=15
const int m=4
не переписывая остальную часть программы
wolf1396
5 / 5 / 0
Регистрация: 07.05.2013
Сообщений: 192
04.07.2013, 11:28  [ТС]     Поясните ошибку, связанную с константой. #8
Цитата Сообщение от ValeryS Посмотреть сообщение
этим ты объявил массив и присвоил ему значение элемента другого массива
естественно компилятор сошел с ума



"Вы, уж, Абрам Моисеевич, определитесь, или штаны оденьте или крестик снимите"(с)
зачем два разных подхода к объявлению i, j??
так в последнем цикле у тебя будет ДВЕ i и ДВЕ j

Добавлено через 4 минуты

и чем не нравится динамическое выделение памяти
сортировка игнорируется вообще, т.ч. ее можно убрать, а вот переполнение С меня напрягает

Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
wolf1396, Нету имени, а теперь попробуйте поменять
C++
1
2
const int n=15
const int m=4
не переписывая остальную часть программы
переполнение D:

а почему оно вдруг появилось?

я не брал вариант "Нет имени" я поменял int c[10] на int c[n+m] больше ошибки не было
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
04.07.2013, 11:32     Поясните ошибку, связанную с константой. #9
wolf1396, Слушай, я же тебе написал в чем ошибка.
У тебя программа по крайней мере подстраивала массив под размер данных, Нету имени, сделал тебе этот массив статическим, отсюда и косяк с переполнением..... все логично.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
04.07.2013, 11:34     Поясните ошибку, связанную с константой. #10
Цитата Сообщение от wolf1396 Посмотреть сообщение
а почему оно вдруг появилось?
а потому что
Цитата Сообщение от wolf1396 Посмотреть сообщение
C++
1
2
3
4
5
for (int i=0; i<n; i++) 
  { 
   int c[i]=a[i];
    c[i+n]=b[i]; 
 }
тупо заложились что n==m;
а в общем случае это не так
нужно два цикла
примерно так
C++
1
2
3
4
5
for (int i=0; i<n; i++) 
    c[i]=a[i];
 
for (int i=0; i<m; i++) 
   c[i+n]=b[i];
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2013, 11:48     Поясните ошибку, связанную с константой.
Еще ссылки по теме:

C++ Выдает ошибку, связанную с функцией isbn
C++ Case с отрицательной константой
C++ Вызов не константной функции, изменяющей свойства класса, из константой . Возможно?

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

Или воспользуйтесь поиском по форуму:
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
04.07.2013, 11:48     Поясните ошибку, связанную с константой. #11
wolf1396, Кроме того массив с у тебя, судя по записи в него данных, может быть до 2n или n+m.

Добавлено через 10 минут
wolf1396, Да и записывать одним циклом два массива с разной размерностью это как то странно. Тут у тебя всегда будет ошибка если размерности отличаются.
Yandex
Объявления
04.07.2013, 11:48     Поясните ошибку, связанную с константой.
Ответ Создать тему
Опции темы

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