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

Expected constant expression; cannot allocate an array of constant size 0 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Крашит из-за кривого условия, как залатать http://www.cyberforum.ru/cpp-beginners/thread668461.html
Есть простая функция для заполнения двух массивов. Как заполнять -- дано по условию, точнее дано по условию как заполнять b. void input(int**a, int**b, int n) { srand(GetTickCount()); for (int i=0; i<n; i++) { for(int j=0;j<n;j++) { a=1+rand() % 99;
C++ Теперь C++11 - полностью и на сто процентов новый C++: чего ждать Приветствую всех ) , друзья подскажите пожалуйста такую вещь. Случайно прочитал на форуме про Стандарт C++11, я читал про ISO и про стандарты С++. Но меня жутко испугала фраза Теперь C++11 - полностью и на сто процентов новый C++. Прощай, C++03….... Объясните пожалуйста мне дилетанту , повторилась история когда ""С переделали в С ++ и назвали его чуть ли не другим языком"" , или С++ лишь... http://www.cyberforum.ru/cpp-beginners/thread668454.html
Не пойму алгоритм программы. Функция total C++
Вот сижу, читаю, не пойму почему в этом примере #include <conio> #include <iostream> using namespace std; void total (int x); int main() {
C++ Перегрузка операторов в классе "Последовательность целых чисел"
Добрый день! Столкнулся с таким заданием: "Создать класс «последовательность целых чисел». Элементы последовательности хранить в динамическом массиве. Реализовать методы: проверка, что последовательность возрастающая, выделение подпоследовательности без заданного элемента. Реализовать операции: добавление элемента к последовательности (+ число), удаление элемента из последовательности (-...
C++ Как создать оконное приложение с помощью MinGW http://www.cyberforum.ru/cpp-beginners/thread668440.html
Блин, вообще не могу понять как создать оконное приложение с помощью MinGW... это ведь возможно?
C++ Подскажите как написать Алгоритм решения индивидуальной задачи разделить на две функции: - функцию, которая организует вычисления по формуле, определенной в задаче соответствующего задания. Алгоритмы этих функций разработайте в трех вариантах: • с использованием цикла do....while; • с использованием цикла while; • с использованием цикла for. подробнее

Показать сообщение отдельно
ra4ok
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 37
11.10.2012, 05:40  [ТС]     Expected constant expression; cannot allocate an array of constant size 0
Цитата Сообщение от DU Посмотреть сообщение
int A[n]={0} - размер массива можно задавать только константным выражением, значение которого известно во время компиляции. т.е.
C++
1
2
3
4
5
6
7
8
9
int A[5] = {0};
 
//или
const int n = 5;
int A[n] = {0};
 
//если размер известен только во время выполнения программы, то используйте вектор вместо массива:
std::vector<int> A(n, 0); // создание вектора размером n с нулевыми значениями элементов
// в вашем случае похоже только эта одна строка и поменяется.

ээээ чета я не понял. мутный код какой-то.
в функцию сортировки передается указатель на инт с именем A
внутри циклов создается массив с именем А и заполненный нулями. далее в массиве элементы не меняются. потом идет код, который сравнивает элементы этого массива, в котором заведомо одни нули.
WTF?
зачем вам в 23 строке int A[n]={0} вообще понадобилось?
Вот собсна основной код
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
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
#include <algorithm> 
int main()
{
    srand(time(0));
    
    const int matrixSize = 5;
    int Matrix[matrixSize][matrixSize], collNumber = 0, Check = 0, A[matrixSize]={0}, i_min;
    
    std::cout << "Matrix: " << std::endl;
    for(int i = 0; i < matrixSize; i++)
    {
            for(int j = 0; j < matrixSize; j++)
            {
                    std::cout << std::setw(4) << (Matrix[i][j] = rand() % 20-10);
                    if(Matrix[i][j]<0 && Matrix[i][j]%2==0)
                        A[i]+=Matrix[i][j];
            }
            std::cout << std::endl;
    }
    
    std::cout << "First coll's number with zero element: ";
    for(int j = 0; j < matrixSize; j++)
            for(int i = 0; i < matrixSize; i++)
            {
                    if(!Check)
                              if(!Matrix[i][j])
                              {
                                               Check = 1;
                                               collNumber = j;
                              }
            }
    std::cout << collNumber + 1 << std::endl;
    for(int i=0; i<matrixSize-1; i++)
    {
        i_min=i;
        for(int j=i+1; j<matrixSize; j++)
            if(A[i_min]<A[j])
                i_min=j;
        std::swap(A[i_min], A[i]);
        for(int j=0; j<matrixSize; j++)
            std::swap(Matrix[i_min][j], Matrix[i][j]);
    }
   std::cout << "New matrix: " << std::endl;
    for(int i = 0; i < matrixSize; i++)
    {
            for(int j = 0; j < matrixSize; j++)
            {
                    std::cout << std::setw(4) << Matrix[i][j]<< " ";
            }
            std::cout << std::endl;
    }   
    
    system("pause");
    return 0;
}
А этот что я написал, то как нас "учили" писать в универе...
Так что мне с A[n] делать?
 
Текущее время: 11:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru