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

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

Войти
Регистрация
Восстановить пароль
 
РоманРХК
0 / 0 / 0
Регистрация: 09.06.2014
Сообщений: 3
#1

Ни я ни компилятор не видим ошибки - C++

09.06.2014, 21:09. Просмотров 284. Ответов 10
Метки нет (Все метки)

Здравствуйте. Я новичок и если у кого есть минута времени, объясните:
Есть такой простой код
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
46
47
48
#include <iostream>
#include <math.h>
#include <iomanip>
 
using namespace std;
 
 
 
 int main ()
{
    int NumOfSellers, FreqNum, i;
    float SellersSum[NumOfSellers];
    int SellersSold [NumOfSellers];
    int Freq [8]={0};
 
    cout << "\n\tEnter number of sellers:" << "\t";
    cin >> NumOfSellers; cout <<endl;
 
    cout << "\tPlease, enter the sums of sold goods by every Seller:\n\n";
    for (i=0;i<NumOfSellers;i++)
    {
        cout << "\tSeller N"<<i+1<<"\t"; cin >> SellersSold [i];cout << endl;
    }
 
    for (i=0; i<NumOfSellers; i++)
    {
        SellersSum [i]=SellersSold [i]*0.09+200;
        FreqNum = floor ((int)SellersSum [i]/100);
        ++Freq[FreqNum-2];
 
    }
 
    cout << "\nSellers"<<setw (10)<<"Sold"<<setw (10)<<"Salary\n";
 
    for (i=0;i<NumOfSellers;i++)
    {
        cout <<i<<setw (13)<<SellersSold[i]<<setw (11)<< SellersSum [i]<< endl;
    }
 
    cout <<"\nThe frequency of bonus:\n";
    for (i=0;i<8;i++)
    {
        if (Freq[i])
        cout << ((i+2)*100)<<"-"<<((((i+2)*100))+99)<<"\t"<<Freq[i]<<endl;
    }
 
    return 0;
}
Так вот сразу после компиляции (которая не сообщает ни о каких ошибках) программа вылетает. Однако если я отключаю ввод NumOfSellers пользователем и инициализирую его в программе int NumOfSellers=5, все отлично работает. Самому кажется, что это както связано с переполнением массива. но ничего разъяснить не могу.

Буду очень благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2014, 21:09     Ни я ни компилятор не видим ошибки
Посмотрите здесь:

Компилятор выдал ошибки - C++
При компиляции dev-c++ выдал ошибки: undefined reference to `timeSetEvent@20' undefined reference to `timeKillEvent@4' ...

Компилятор выдает ошибки - C++
Почему компилятор Microsoft Visual C++ 7.1 не хочет компилить вот этот код: #include &lt;fstream&gt; long a, b, c; int main(){ ...

Почему компилятор выдаёт ошибки? - C++
Почему компилятор выдаёт ошибки? #include &lt;iostream.h&gt; #include &lt;conio.h&gt; Void main () { int a, b, c; std::cin &gt;&gt; a &gt;&gt; b...

Обновил компилятор и появились ошибки - C++
Здравствуйте сегодня обновил компилятор и тут же после открытия старой программы появились ошибки. На прежнем все работало.. ...

Компилятор выдает бредовые ошибки - C++
1&gt;f:\lessons\c++\projects-2013\students-beta\students\usestudents.cpp(4): error C2628: недопустимый &quot;Students&quot; с последующим &quot;int&quot;...

поправьте код компилятор выдает ошибки - C++
#include &lt;iostream&gt; using namespace std; bool Hit(float x, float y, float r) { ...

Компилятор выдает ошибки (Решение 1.exe has triggered a breakpoint) - C++
и еще эта ошибка: &quot;Unhandled exception at 0x770E5624 (ntdll.dll) in Решение 1.exe: 0xC0000374: Куча была повреждена (parameters:...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
5268 / 4588 / 1538
Регистрация: 14.04.2014
Сообщений: 18,226
09.06.2014, 21:12     Ни я ни компилятор не видим ошибки #2
Нельзя так создавать массив. Либо сделай NumOfSellers константой, либо создавай массивы динамически через new.
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,734
09.06.2014, 21:16     Ни я ни компилятор не видим ошибки #3
Цитата Сообщение от nmcf Посмотреть сообщение
Нельзя так создавать массив.
У ГНУса можно
тут другое интересно
Цитата Сообщение от РоманРХК Посмотреть сообщение
C++
1
2
3
4
5
6
7
int NumOfSellers, FreqNum, i;
    float SellersSum[NumOfSellers];
    int SellersSold [NumOfSellers];
    int Freq [8]={0};
 
    cout << "\n\tEnter number of sellers:" << "\t";
    cin >> NumOfSellers; cout <<endl;
сначала объявляем переменные, не инициализируя их
потом создаем массив неизвестно какого размера
а только потом вводим размер массива
Цитата Сообщение от РоманРХК Посмотреть сообщение
float SellersSum[NumOfSellers];
какой размер массива ты хотел получить?
РоманРХК
0 / 0 / 0
Регистрация: 09.06.2014
Сообщений: 3
09.06.2014, 21:18  [ТС]     Ни я ни компилятор не видим ошибки #4
Спасибо. Если Вас не затруднит в двух словах почему нельзя?

Добавлено через 2 минуты
Размер массива по выбору. То есть если бы я объявил массивы после ввода переменной все было бы нормально?
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,734
09.06.2014, 21:22     Ни я ни компилятор не видим ошибки #5
Цитата Сообщение от РоманРХК Посмотреть сообщение
в двух словах почему нельзя?
потому что размер массива должен быть известен во время компиляции
но есть некоторые компиляторы из семейства GNU в частности GCC(GNU Compiler Collection) которые это разрешают

Добавлено через 1 минуту
Цитата Сообщение от РоманРХК Посмотреть сообщение
То есть если бы я объявил массивы после ввода переменной все было бы нормально?
еще раз
зависит от компилятора
в GCC проканает, у остальных ошибка
РоманРХК
0 / 0 / 0
Регистрация: 09.06.2014
Сообщений: 3
09.06.2014, 21:24  [ТС]     Ни я ни компилятор не видим ошибки #6
Пользуюсь CodeBlocks. Понял Вас. Спасибо еще раз.
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
10.06.2014, 07:25     Ни я ни компилятор не видим ошибки #7
Цитата Сообщение от ValeryS Посмотреть сообщение
потому что размер массива должен быть известен во время компиляции
но есть некоторые компиляторы из семейства GNU в частности GCC(GNU Compiler Collection) которые это разрешают
Variable length array - это стандарт C99.
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,734
10.06.2014, 14:08     Ни я ни компилятор не видим ошибки #8
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
это стандарт C99.
вообще то здесь плюсы
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
10.06.2014, 14:18     Ни я ни компилятор не видим ошибки #9
Цитата Сообщение от ValeryS Посмотреть сообщение
вообще то здесь плюсы
Как видно выше - это не мешает C++ компилятору, поддерживающему C99.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
10.06.2014, 14:51     Ни я ни компилятор не видим ошибки #10
Цитата Сообщение от ValeryS Посмотреть сообщение
У ГНУса можно
и у ГНУса тоже нельзя.
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Как видно выше - это не мешает C++ компилятору, поддерживающему C99.
Это проблемы составителей компилятора. Я ща возьму и напишу компилятор С++, внезапно поддерживающий пару функций из Паскаля, элементы синтаксиса Пайтона и пару плюшек из PHP. Вот здорово будет!
А то их компилятор плюсов может поддерживать левые языки, а мой нет?!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2014, 15:08     Ни я ни компилятор не видим ошибки
Еще ссылки по теме:

Компилятор выдает три ошибки, при попытке скомпилировать программу - C++
Добрый день. Мне по заданию нужно решить эту формулу: l=min(x+y,y-z)/max(x,y). Я написал код программы на C++, но компилятор выдает 3...

компилятор - C++
Здравствуйте! Посоветуйте, какой мне нужно установить компилятор, чтоб я могда работать с графикой, динамич. структурами и т.д. Желательно...

Компилятор - C++
Посоветуйте хороший компилятор, не требующий огромной установки (типа Бюилдера и Визуал Студио со всеми SDK пакетами). Что нибудь...

Компилятор С - C++
Добрый вечер! Мне нужен именно компилятор С, а не С++, но что-то никак не могу найти. Как я поняла исходники на С имеют расширение с, а...

Компилятор - C++
В какой программе вы бы посоветовали работать: Visial C++; MinGW Developer Studio; и т.д. И как в ней скомпилировать программу?...


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

Или воспользуйтесь поиском по форуму:
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
10.06.2014, 15:08     Ни я ни компилятор не видим ошибки #11
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Я ща возьму и напишу компилятор С++
И в чем проблема? Флаг в руки. Когда оно сравняется по распространенности с GGC, вернемся к обсуждению этой темы.
Yandex
Объявления
10.06.2014, 15:08     Ни я ни компилятор не видим ошибки
Ответ Создать тему
Опции темы

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