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

Массив: при компилировании исходника компилятор выдает ошибку - C++

Восстановить пароль Регистрация
 
Kings_ton
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 43
22.10.2013, 22:27     Массив: при компилировании исходника компилятор выдает ошибку #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# include <iostream>
# include <math.h>
# include <stdio.h>
using namespace std;
int main ()
{
const int ishod = 15;
const int b=15,c=15;
int mas[ishod],chet[b],nechet[c];
for(int i = 0; i < ishod; i++)
{
mas[i] = 1 + rand() % 200;
cout<<mas[i]<<'\t';
}
for(int i=0;i<=ishod;i++)
{
if(mas[i]%2==0)
chet[b]=mas[i];
else
nechet[c]=mas[i];
cout<<"Chetnie:"<<chet[b]<<'\t'<<'\n'<<"nechetnie:"<<nechet[c]<<'\t';
}
}
Гляньте, что не так ? При компилировании выдает ошибку.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
22.10.2013, 22:34     Массив: при компилировании исходника компилятор выдает ошибку #2
Kings_ton,
C++
1
for(int i=0;i<=ishod;i++)
вы выходите тут за пределы массива надо так
C++
1
for(int i=0;i<ishod;i++)
Добавлено через 5 минут
вот так в общем...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int ch=0,nch=0;
for(int i=0;i<ishod;i++)
{
if(mas[i]%2==0){
chet[ch]=mas[i];
ch++;
}
else {
nechet[nech]=mas[i];
nech++;
}
}
cout<<"Chetnie:\n";
for(int i=0;i<ch;i++)
cout<<chet[i]<<"\t";
cout<<endl;
cout<<"Nechetnie:\n";
for(int i=0;i<nech;i++)
cout<<nechet[i]<<"\t";
Kings_ton
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 43
22.10.2013, 22:34  [ТС]     Массив: при компилировании исходника компилятор выдает ошибку #3
Работае, но выдает непонятные цифры, типа -8732432...
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
22.10.2013, 22:38     Массив: при компилировании исходника компилятор выдает ошибку #4
Kings_ton, я внес правки попробуйте еще раз
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
22.10.2013, 22:40     Массив: при компилировании исходника компилятор выдает ошибку #5
Цитата Сообщение от newb_programmer Посмотреть сообщение
int ch=0,nch=0;
Цитата Сообщение от newb_programmer Посмотреть сообщение
nechet[nech]=mas[i];
Описка???
Kings_ton
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 43
22.10.2013, 22:50  [ТС]     Массив: при компилировании исходника компилятор выдает ошибку #6
newb_programmer,
Error 1 error C2373: 'ch' : redefinition; different type modifiers
Error 2 error C2373: 'nech' : redefinition; different type modifiers
Error 3 error C2105: '++' needs l-value
Error 4 error C2105: '++' needs l-value

Добавлено через 31 секунду
newb_programmer,
писал вот так:
# include <iostream>
# include <math.h>
# include <stdio.h>
using namespace std;
int main ()
{
const int ishod=15,ch=15,nech=15;
int mas[ishod],chet[ch],nechet[nech];
int ch=0,nech=0;
for(int i=0;i<ishod;i++)
{
if(mas[i]%2==0){
chet[ch]=mas[i];
++ch;
}
else {
nechet[nech]=mas[i];
nech++;
}
}
cout<<"Chetnie:\n";
for(int i=0;i<ch;i++)
cout<<chet[i]<<"\t";
cout<<endl;
cout<<"Nechetnie:\n";
for(int i=0;i<nech;i++)
cout<<nechet[i]<<"\t";
}

Добавлено через 3 минуты
Исправил немного заменил счетчики с ch,nech на a,b, заработало но выдает одно и то же число, начинается на-8....
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.10.2013, 22:52     Массив: при компилировании исходника компилятор выдает ошибку #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
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;
 
int main ()
{
    const int ishod = 15;
    const int b=15,c=15;
    int mas[ishod],chet[b],nechet[c];
    for(int i = 0; i < ishod; i++)
    {
        mas[i] = 1 + rand() % 200;
        cout << mas[i] << '\t';
    }
    
    cout << endl;
 
    int j = 0, k = 0;
    for(int i = 0; i < ishod; i++)
    {
        if(mas[i] % 2 == 0)
        {
            chet[j] = mas[i];
            ++j;
        }
        else
        {
            nechet[k] = mas[i];
            ++k;
        }
    }
    
    cout << "Chetnie: ";
    for (int i = 0; i < j; ++i)
        cout << chet[i] << '\t';
    
    cout << endl;
    
    cout << "Nechetnie: ";
    for (int i = 0; i < k; ++i)
        cout << nechet[i] << '\t';
 
    return 0;
}
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
22.10.2013, 22:55     Массив: при компилировании исходника компилятор выдает ошибку #8
Цитата Сообщение от Kings_ton Посмотреть сообщение
Error 1 error C2373: 'ch' : redefinition; different type modifiers
Error 2 error C2373: 'nech' : redefinition; different type modifiers
Error 3 error C2105: '++' needs l-value
Error 4 error C2105: '++' needs l-value
ну так константы нельзя изменять, на то они и константы
тебе же написали
Цитата Сообщение от newb_programmer Посмотреть сообщение
int ch=0,nch=0;
в соответствии с твоим кодом будет выглядеть так
C++
1
2
3
const int ishod=15;
int ch=0,nech=0;
 int mas[ishod],chet[ishod],nechet[ishod];
Kings_ton
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 43
22.10.2013, 22:55  [ТС]     Массив: при компилировании исходника компилятор выдает ошибку #9
Спасибо большое)
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
22.10.2013, 22:58     Массив: при компилировании исходника компилятор выдает ошибку #10
Цитата Сообщение от alsav22 Посмотреть сообщение
if(mas[i] % 2 == 0)
* * * * {
* * * * * * chet[j] = mas[i];
* * * * * * ++j;
* * * * }
* * * * else
* * * * {
* * * * * * nechet[k] = mas[i];
* * * * * * ++k;
* * * * }
а можно и так
C++
1
2
3
4
if(mas[i]%2==0)
   chet[j++] = mas[i];
else
    nechet[k++] = mas[i];
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 00:52     Массив: при компилировании исходника компилятор выдает ошибку #11
Цитата Сообщение от ValeryS Посмотреть сообщение
а можно и так
Лишние копии.
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
23.10.2013, 01:15     Массив: при компилировании исходника компилятор выдает ошибку #12
Цитата Сообщение от alsav22 Посмотреть сообщение
Лишние копии.
в данном решении, не уверен
обычно массивы индексируются одним регистром считали добавили никаких сохранений
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 01:49     Массив: при компилировании исходника компилятор выдает ошибку #13
При постфиксном инкременте временная копия старого значения индекса создаётся.
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
23.10.2013, 08:20     Массив: при компилировании исходника компилятор выдает ошибку #14
Цитата Сообщение от alsav22 Посмотреть сообщение
При постфиксном инкременте временная копия старого значения индекса создаётся.
это в общем случае
но для встроенных типов, тем более для индексов массивов, не всегда соблюдается, зависит от компилятора
так что анализировать нужно ассемблерный листинг
оптимизация штука тонкая
простой пример
при программировании на CodeVisionAVR для ATmega8535
вот такая конструкция
C++
1
ccc=aaa<bbb;
занимала больше места и работала медленнее чем
C++
1
2
3
4
if(aaa<bbb)
 ccc=1;
else
 ccc=0;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2013, 12:48     Массив: при компилировании исходника компилятор выдает ошибку
Еще ссылки по теме:

C++ Нужно сделать по заданию задачу, выдает ошибку при компилировании
Почему компилятор выдает ошибку? C++
Компилятор выдает ошибку при использовании фабричного метода C++

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

Или воспользуйтесь поиском по форуму:
alsav22
23.10.2013, 12:48     Массив: при компилировании исходника компилятор выдает ошибку
  #15

Не по теме:

Цитата Сообщение от ValeryS Посмотреть сообщение
это в общем случае
но для встроенных типов, тем более для индексов массивов, не всегда соблюдается, зависит от компилятора
так что анализировать нужно ассемблерный листинг
оптимизация штука тонкая
Согласен. Но лучше не привыкать (по-моему). Мне вообще не очень нравятся инкременты\декременты индексов. Удобочитаемость, по-моему, не та.

Yandex
Объявления
23.10.2013, 12:48     Массив: при компилировании исходника компилятор выдает ошибку
Ответ Создать тему
Опции темы

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