Безграничные массивы? - PullRequest
       0

Безграничные массивы?

1 голос
/ 20 января 2011

У меня проблемы.Я написал код для нахождения простых чисел вплоть до числа, но по какой-то причине он выдает ошибку, что я не определил количество элементов в массиве, который я буду использовать.Возможно ли иметь массив, где количество элементов не ограничено?Спасибо:)

#include <iostream>
#include <cmath>
#include <fstream>
#include <cstdlib>
using namespace std;
int primer(int max);
int main()
{
    system("pause");
    return 0;
    primer(1000);
}

int primer(int max){
    int a[]=2;
    for (int i=2;i<=max;i++){
    prime=true;
    for (int ii=1;ii<=#a;ii++) {
    if i/a[ii]==math.floor(i/a[ii]) {
    prime=false;
    }
    }
    if prime==true {
    a[#a+1]=i;
    }
    }
    for (i=1;i<=#a;i++) {
    print(a[i]);
    }
}
}

Ответы [ 4 ]

6 голосов
/ 20 января 2011

Да. Используйте std::vector или std::deque.

1 голос
/ 20 января 2011

Вы всегда «ограничены», если только объемом памяти, который можно выделить для массива.

Сказав это, вы, вероятно, будете в порядке, используя std::vector.

1 голос
/ 20 января 2011

Компилятор должен знать, сколько места нужно выделить, и поэтому требует от вас указать, сколько элементов у вас есть.

Вы можете попробовать использовать вектор STL вместо массива. Это позволяет добавлять столько элементов, сколько вы хотите, без объявления номера в самом начале.

http://www.cplusplus.com/reference/stl/vector/vector/

1 голос
/ 20 января 2011

Что это за символ #, который вы используете везде?

Ваша строка int a[]=2 неверна.

Вам необходимо указать, насколько большим будет ваш массив.Например, int a[100] или int a[] = {Values here}.

При этом вам, вероятно, нужен массив гибкого размера, такой как векторный класс.

...