Другие языки программирования и технологии
Как объявить массив в с++, если не известно количество элементов?
То есть вводиться набор чисел (Размер входного потока не превышает 256 КБ) , кол-во элементов остается неизвестным . Ну, и как узнать размер этого массива?
Сохраняйте элементы в другом хранилище, например в связанном списке или в файле. Когда входные данные кончатся - выделите массив уже известного размера, и скопируйте данные в него.
Или используйте STL. Там есть подходящий Вам шаблон vector. Например так:
...
std::vector <int> myArray;
int value;
cin >> value;
while( value ) { // пока не встретится число 0
myArray.push_back(value); // допишем число в конец вектора
cin >> value; // прочитаем следующее число
}
...
Или используйте STL. Там есть подходящий Вам шаблон vector. Например так:
...
std::vector <int> myArray;
int value;
cin >> value;
while( value ) { // пока не встретится число 0
myArray.push_back(value); // допишем число в конец вектора
cin >> value; // прочитаем следующее число
}
...
рулеткой
бери динамический массив ...увеличивай его длинну с каждым элементом на 1 ...
В таком случае удобно использовать динамические массивы
Тут все зависит от способа заполнения массива.
1 способ - в каком-то месте программы вы узнаете количество элементов массива и больше оно не изменяется (ну или хотя-бы не увеличивается) . Тогда в начале программы объявляете массив как обычный указатель нужного типа и при получении размера массива функцией new или другой подобной выделяете требуемое место в памяти и присваиваете ее адрес ранее объявленому указателю. Далее с ним можно работать как с обычным массивом.
2 способ - в процессе работы массив может разростаться сколько угодно много. Тогда для хранения можно использовать либо готовый контейнерный класс, либо самому написать клас типа стек, дек, очередь, связаный список и тд.
А еще проще если знаете максимальный размер массива больше которого он никак не станет и памяти не жалко, можно объявить массив максимального размера не не использовать его не полную.
1 способ - в каком-то месте программы вы узнаете количество элементов массива и больше оно не изменяется (ну или хотя-бы не увеличивается) . Тогда в начале программы объявляете массив как обычный указатель нужного типа и при получении размера массива функцией new или другой подобной выделяете требуемое место в памяти и присваиваете ее адрес ранее объявленому указателю. Далее с ним можно работать как с обычным массивом.
2 способ - в процессе работы массив может разростаться сколько угодно много. Тогда для хранения можно использовать либо готовый контейнерный класс, либо самому написать клас типа стек, дек, очередь, связаный список и тд.
А еще проще если знаете максимальный размер массива больше которого он никак не станет и памяти не жалко, можно объявить массив максимального размера не не использовать его не полную.
Массив может быть и динамический, не знали?
Похожие вопросы
- Напишите программу, которая находит в массиве количество элементов, равных заданному значению X .
- С++. Элементы массива задаются с клавиатуры. Подсчитать количество элементов массива, являющихся трехзначным числом.
- 1.Заполнить массив случайными числами. Вывести элементы массива на экран. Заменить все его минимальные элементы нулями.
- как в Паскале лучше объявить массив, если количество элементов заранее неизвестно? пожалуйста, очень срочно надо!!
- Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами - C++
- Ввести 10 элементов в массив с клавиатуры, и определите количество элементов, которые кратный 5.
- С++ Как узнать количество элементов в массиве от 5 до 1?
- Объявить массив целых чисел и заполнить его случайными значенниями.
- дан массив целых чисел F1,F2...Fn. распечатать элементы, нах-ся между min и max и их номера. подскажите где я ошибся
- СРОЧНО ПАСКАЛЬ задан одномерный массив с (1..10), дать ответ: каких элементов больше: положительных или отрицательных