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

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

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

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

22.10.2013, 22:27. Просмотров 589. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2013, 22:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массив: при компилировании исходника компилятор выдает ошибку (C++):

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

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

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

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

Компилятор выдает ошибку при объявлении массива. Не могу понять где соль - C++
Объясните пожалуйста в чем моя ошибка. Вот исходник #include &lt;iostream&gt; // cin, cout,endl #include &lt;math.h&gt; // Мат функции ...

неверно выдает результат при компилировании - C++
добрый вечер, дана задача :&quot;1. Вычислить медианы треугольника со сторонами a, b, c по формулам(фото)&quot; но при отладке вне зависимости от...

14
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";
0
Kings_ton
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 44
Завершенные тесты: 1
22.10.2013, 22:34  [ТС] #3
Работае, но выдает непонятные цифры, типа -8732432...
0
newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 555
22.10.2013, 22:38 #4
Kings_ton, я внес правки попробуйте еще раз
0
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,926
22.10.2013, 22:40 #5
Цитата Сообщение от newb_programmer Посмотреть сообщение
int ch=0,nch=0;
Цитата Сообщение от newb_programmer Посмотреть сообщение
nechet[nech]=mas[i];
Описка???
0
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....
0
alsav22
5421 / 4816 / 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;
}
1
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,926
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
Kings_ton
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 44
Завершенные тесты: 1
22.10.2013, 22:55  [ТС] #9
Спасибо большое)
0
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,926
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
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 00:52 #11
Цитата Сообщение от ValeryS Посмотреть сообщение
а можно и так
Лишние копии.
0
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,926
23.10.2013, 01:15 #12
Цитата Сообщение от alsav22 Посмотреть сообщение
Лишние копии.
в данном решении, не уверен
обычно массивы индексируются одним регистром считали добавили никаких сохранений
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 01:49 #13
При постфиксном инкременте временная копия старого значения индекса создаётся.
0
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,926
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2013, 12:48
Привет! Вот еще темы с ответами:

При компилировании компилятор вылетает,нет ли ошибок, или почему он так? - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;iomanip&gt; using namespace std; int main; void init (int matrix, int size); ...

компилятор выдает ошибку - C++
после запуска программы компилятор выдает окно с сообщением: &quot;необработанное исключение в &quot;0x77e015de&quot; в &quot;4.exe&quot;: 0xC0000005: Access...

Компилятор выдает ошибку - C++
Работаю в Code::Blocs. Компилятор выдает ошибку: &quot;LAB 2 - Debug&quot; uses an invalid compiler. Probably the toolchain path within the...

wxDEV-C++ компилятор выдает ошибку - C++
Всем добрый день в программировании я новичок у меня такая проблема. Недавно установил wxDEV-C++ написал первую программку из книги...


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

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

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