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

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

Войти
Регистрация
Восстановить пароль
 
Kings_ton
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 44
Завершенные тесты: 1
#1

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

22.10.2013, 22:27. Просмотров 565. Ответов 14
Метки нет (Все метки)

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';
}
}
Гляньте, что не так ? При компилировании выдает ошибку.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2013, 22:27     Массив: при компилировании исходника компилятор выдает ошибку
Посмотрите здесь:

C++ wxDEV-C++ компилятор выдает ошибку
C++ Компилятор выдает ошибку при объявлении массива. Не могу понять где соль
Компилятор выдает ошибку при создании списка C++
Компилятор выдает ошибку C++
При компилировании компилятор вылетает,нет ли ошибок, или почему он так? C++
C++ компилятор выдает ошибку
C++ Нужно сделать по заданию задачу, выдает ошибку при компилировании
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 555
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
Сообщений: 44
Завершенные тесты: 1
22.10.2013, 22:34  [ТС]     Массив: при компилировании исходника компилятор выдает ошибку #3
Работае, но выдает непонятные цифры, типа -8732432...
newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 555
22.10.2013, 22:38     Массив: при компилировании исходника компилятор выдает ошибку #4
Kings_ton, я внес правки попробуйте еще раз
ValeryS
Модератор
6516 / 4982 / 460
Регистрация: 14.02.2011
Сообщений: 16,504
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
Сообщений: 44
Завершенные тесты: 1
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
5415 / 4811 / 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
Модератор
6516 / 4982 / 460
Регистрация: 14.02.2011
Сообщений: 16,504
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
Сообщений: 44
Завершенные тесты: 1
22.10.2013, 22:55  [ТС]     Массив: при компилировании исходника компилятор выдает ошибку #9
Спасибо большое)
ValeryS
Модератор
6516 / 4982 / 460
Регистрация: 14.02.2011
Сообщений: 16,504
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
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 00:52     Массив: при компилировании исходника компилятор выдает ошибку #11
Цитата Сообщение от ValeryS Посмотреть сообщение
а можно и так
Лишние копии.
ValeryS
Модератор
6516 / 4982 / 460
Регистрация: 14.02.2011
Сообщений: 16,504
23.10.2013, 01:15     Массив: при компилировании исходника компилятор выдает ошибку #12
Цитата Сообщение от alsav22 Посмотреть сообщение
Лишние копии.
в данном решении, не уверен
обычно массивы индексируются одним регистром считали добавили никаких сохранений
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 01:49     Массив: при компилировании исходника компилятор выдает ошибку #13
При постфиксном инкременте временная копия старого значения индекса создаётся.
ValeryS
Модератор
6516 / 4982 / 460
Регистрация: 14.02.2011
Сообщений: 16,504
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++ LoadKeyboardLayout - компилятор выдает ошибку
Компилятор выдает ошибку при использовании фабричного метода C++
C++ Компилятор выдает ошибку при сворачивании SQL запроса в функцию
неверно выдает результат при компилировании C++

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

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

Не по теме:

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

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

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