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

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

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

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

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

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

14
 Аватар для newb_programmer
238 / 238 / 113
Регистрация: 03.09.2011
Сообщений: 558
22.10.2013, 22:34
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  [ТС]
Работае, но выдает непонятные цифры, типа -8732432...
0
 Аватар для newb_programmer
238 / 238 / 113
Регистрация: 03.09.2011
Сообщений: 558
22.10.2013, 22:38
Kings_ton, я внес правки попробуйте еще раз
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
22.10.2013, 22:40
Цитата Сообщение от 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  [ТС]
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
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
22.10.2013, 22:52
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
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
22.10.2013, 22:55
Цитата Сообщение от 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  [ТС]
Спасибо большое)
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
22.10.2013, 22:58
Цитата Сообщение от 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
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 00:52
Цитата Сообщение от ValeryS Посмотреть сообщение
а можно и так
Лишние копии.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
23.10.2013, 01:15
Цитата Сообщение от alsav22 Посмотреть сообщение
Лишние копии.
в данном решении, не уверен
обычно массивы индексируются одним регистром считали добавили никаких сохранений
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 01:49
При постфиксном инкременте временная копия старого значения индекса создаётся.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
23.10.2013, 08:20
Цитата Сообщение от alsav22 Посмотреть сообщение
При постфиксном инкременте временная копия старого значения индекса создаётся.
это в общем случае
но для встроенных типов, тем более для индексов массивов, не всегда соблюдается, зависит от компилятора
так что анализировать нужно ассемблерный листинг
оптимизация штука тонкая
простой пример
при программировании на CodeVisionAVR для ATmega8535
вот такая конструкция
C++
1
ccc=aaa<bbb;
занимала больше места и работала медленнее чем
C++
1
2
3
4
if(aaa<bbb)
 ccc=1;
else
 ccc=0;
0
23.10.2013, 12:48

Не по теме:

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.10.2013, 12:48
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru