Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 46
1

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

22.10.2013, 22:27. Показов 1330. Ответов 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';
}
}
Гляньте, что не так ? При компилировании выдает ошибку.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2013, 22:27
Ответы с готовыми решениями:

Нужно сделать по заданию задачу, выдает ошибку при компилировании
Создать класс для работы сo строками. Разработать элементы класса: a. Поля: • * указатель на char...

Компилятор выдает ошибку при создании списка
Доброго времени суток всем, не могу понять где ошибка создаю список list самым простым способом...

Оператор выбора "case" выдаёт ошибку при компилировании
Дано условие: используя оператор &quot; Switch &quot; определить чему равен Y, при условии, что если Х =...

Компилятор выдает ошибку при объявлении типа
Начал изучение Haskell совсем недавно, но уже столкнулся с проблемой. Ввожу: Func ::...

14
238 / 238 / 113
Регистрация: 03.09.2011
Сообщений: 558
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";
0
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 46
22.10.2013, 22:34  [ТС] 3
Работае, но выдает непонятные цифры, типа -8732432...
0
238 / 238 / 113
Регистрация: 03.09.2011
Сообщений: 558
22.10.2013, 22:38 4
Kings_ton, я внес правки попробуйте еще раз
0
Модератор
Эксперт по электронике
8574 / 6389 / 860
Регистрация: 14.02.2011
Сообщений: 22,229
22.10.2013, 22:40 5
Цитата Сообщение от newb_programmer Посмотреть сообщение
int ch=0,nch=0;
Цитата Сообщение от newb_programmer Посмотреть сообщение
nechet[nech]=mas[i];
Описка???
0
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 46
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....
0
5480 / 4875 / 831
Регистрация: 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;
}
1
Модератор
Эксперт по электронике
8574 / 6389 / 860
Регистрация: 14.02.2011
Сообщений: 22,229
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];
0
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 46
22.10.2013, 22:55  [ТС] 9
Спасибо большое)
0
Модератор
Эксперт по электронике
8574 / 6389 / 860
Регистрация: 14.02.2011
Сообщений: 22,229
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];
0
5480 / 4875 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 00:52 11
Цитата Сообщение от ValeryS Посмотреть сообщение
а можно и так
Лишние копии.
0
Модератор
Эксперт по электронике
8574 / 6389 / 860
Регистрация: 14.02.2011
Сообщений: 22,229
23.10.2013, 01:15 12
Цитата Сообщение от alsav22 Посмотреть сообщение
Лишние копии.
в данном решении, не уверен
обычно массивы индексируются одним регистром считали добавили никаких сохранений
0
5480 / 4875 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 01:49 13
При постфиксном инкременте временная копия старого значения индекса создаётся.
0
Модератор
Эксперт по электронике
8574 / 6389 / 860
Регистрация: 14.02.2011
Сообщений: 22,229
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;
0
alsav22
23.10.2013, 12:48     Массив: при компилировании исходника компилятор выдает ошибку
  #15

Не по теме:

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

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2013, 12:48

Компилятор выдает ошибку при использовании фабричного метода
Всем привет!!! новая ошибка... смотрите, теперь у меня есть класс template &lt;typename T&gt; ...

Компилятор выдает ошибку при сворачивании SQL запроса в функцию
Вечер добрый! При написании программы возникла необходимость создать функции. Однако компилятор...

При проверке сайтом олимпиады программы, компилятор выдает ошибку
Сама задача. Вы пишете программу, задача которой заключается в анализе данных с биржи и принятии...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru