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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 68, средняя оценка - 4.76
REALIST07
Автор FAQ
Автор FAQ
176 / 176 / 13
Регистрация: 11.06.2010
Сообщений: 932
#1

Массив заранее неизвестного размера - C++

22.09.2010, 23:27. Просмотров 9394. Ответов 18
Метки нет (Все метки)

Возможно сейчас произвучит тупой вопрос,не судите строго,но можно каким-нибудь образом сделать чтобы размер массива задавался пользователем?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2010, 23:27     Массив заранее неизвестного размера
Посмотрите здесь:

Как передать в функцию указатель на двумерный массив заранее неизвестного размера? - C++
Ребята, скажите пожалуйста, как реализовать такую идею? Необходимо передать в функцию двумерный массив, чтобы она изменала его элементы....

Можно ли создать вектор заранее неизвестного размера? - C++
Скажите пожалуйста, можно ли создать вектор заранее неизвестного размера так, чтобы пользователю перед его заполнением не нужно было...

Массив неизвестного размера - C++
Хочу написать функцию для нахождения предела последовательности. А и eps вводятся с клавиатуры. Цикл do while - обязательное условие. n...

Как обьявить массив неизвестного размера? - C++
Помогите разобраться, есть класс, в котором обьявлен двумерный массив структур. Размер массива неизвестен, но должен быть определен во...

Передача функции заранее неизвестного объекта - C++
Здравствуйте. Можно ли не используя шаблонов передать функции объект заранее неизвестного класса и применить к нему функцию-член? ...

Функция с переменным числом параметров заранее неизвестного типа - C++
Здравствуйте, коллеги! Прошу помочь начинающему в С++. Есть функция с переменным числом параметров заранеее неизвестного типа. Внутри...

Умножение матрицы неизвестного размера - C++
задание такоэ нужно ввести размерность 2 матриц с клавиатуры а потом их перемножить... но проблема в том что не знаю как записать...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
22.09.2010, 23:29     Массив заранее неизвестного размера #2
угу, динамическое выделение памяти.. погуглите по этому вопросу =)
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
22.09.2010, 23:30     Массив заранее неизвестного размера #3
Вы ето имели введу ?
C++
1
2
3
4
5
int*Arr;
int n=0;
std::cout<<"Enter n: ";
std::cin>>n;
Arr=new int[n];
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
22.09.2010, 23:32     Массив заранее неизвестного размера #4
и удалить в конце программы

C++
1
delete [] Arr;
REALIST07
Автор FAQ
Автор FAQ
176 / 176 / 13
Регистрация: 11.06.2010
Сообщений: 932
22.09.2010, 23:35  [ТС]     Массив заранее неизвестного размера #5
Возможно сейчас прозвучит второй тупой вопрос,но это что?объясните,со слов людей лучше доходит
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
22.09.2010, 23:39     Массив заранее неизвестного размера #6
C++
1
2
3
4
5
6
7
8
int*Arr;            //создаем указатель на число   типа инт
int n=0;           //создаем число - размер массива
std::cout<<"Enter n: ";
std::cin>>n;
Arr=new int[n];    //выделям сырую память   под  массив Интовых чисел длиной в N, 
//где Arr - указатель на 1ый элемент. 
/*код вашей программы*/
delete [] Arr;     //удаляем выделенную память, так как сама она не очищается.
suv121
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
22.09.2010, 23:42     Массив заранее неизвестного размера #7
а как выделить память под массив , когда пользователь сам не знает какой длины будет массив??
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
22.09.2010, 23:45     Массив заранее неизвестного размера #8
а кто знает?) или юзайте стл - векторы, их ресайзить можно.
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
22.09.2010, 23:46     Массив заранее неизвестного размера #9
Если не знаеш какой размер масива,юзай вектора.
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
22.09.2010, 23:53     Массив заранее неизвестного размера #10
Цитата Сообщение от REALIST07 Посмотреть сообщение
Возможно сейчас прозвучит второй тупой вопрос,но это что?
Обратитесь к литературе, а именно к теме посвященной динамической памяти. Спрашивая на форумах, Вы мало чего поймете.
suv121
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
23.09.2010, 00:00     Массив заранее неизвестного размера #11
а можно какой нибудь пример с вектором
mrMRak
38 / 38 / 3
Регистрация: 02.06.2010
Сообщений: 105
23.09.2010, 00:01     Массив заранее неизвестного размера #12
http://www.cplusplus.com/reference/stl/vector/
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
23.09.2010, 00:01     Массив заранее неизвестного размера #13
suv121, конкретный пример здесь.
J.A.B.
0 / 0 / 0
Регистрация: 08.07.2012
Сообщений: 14
26.12.2013, 08:56     Массив заранее неизвестного размера #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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**В массиве М[N] записаны оклады работников предприятия. Вывести на экран средний оклад по предприятию и номера тех работников, чьи оклады ниже среднего.*/
#include <iostream>
#include <windows.h>
using namespace std;
 
int arrsize(int j)
{
    return j;
}
 
int main()
{
    setlocale(LC_ALL, "russian");
    int i = 0, j, k = 0;
 
    double sum = 0, ave;
    cout << "Введите кол-во работников" << endl;
    cin >> j;
    const int n = arrsize(j);
    double m[n];// = {0};
    cout << "Вводите заработные платы сотрудников поочерёдно" << endl;
    for (i; i <= n-1; i++)
    {
        cin >> m[i];
        sum = sum + m[i];
    }
    ave = sum/n;
 
    cout << "Средний оклад по предприятию равен "<< ave << endl
         << "Номера работников, получающих меньше средней з/п: " << endl;
    for (k; k <= n-1; k++)
    {
        if(m[k] < ave) cout << k << endl;
    }
    system ("pause");
    return 0;
}
PS если в 20 строке присвоить значение - вывалится в ошибку
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2013, 09:38     Массив заранее неизвестного размера
Еще ссылки по теме:

Чтение файла неизвестного размера - C++
Необходимо прочитать файл неизвестного размера, динамически растягивая массив, загнать файл в массив и узнать его размер. Приведите...

Ввод и вывод строки неизвестного размера - C++
Как ввести и вывести строку неизвестного размера в c++? Нигде просто нормального объяснения не нашел.

Из текстового файла неизвестного размера вывести на экран все предложения, не содержащие запятых - C++
Привет, Программисты! :) Нужна ваша помощь... Есть задача по поводу работы со строками: &quot;Из текстового файла неизвестного размера вывести...

Массив с неизвестным заранее количеством элементов - C++
Задача: Создать программу, которая позволит ввести неограниченное количество значений и сохранит их в массиве. #include &lt;iostream&gt; ...

Возможно ли создать массив неизвестной заранее размерности? - C++
Собственно, сабж в названии. Можно ли получить от пользователя N, где N - размерность массива, создать его и заполнить рандомными числами?...


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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
13054 / 7317 / 815
Регистрация: 27.09.2012
Сообщений: 18,053
Записей в блоге: 3
Завершенные тесты: 1
26.12.2013, 09:38     Массив заранее неизвестного размера #15
Цитата Сообщение от J.A.B. Посмотреть сообщение
Есть ещё один способ без использоания вектора, да и по сути, это не динамический массив.
Это нестандартное расширение.
Если компилируете с помощью MinGW, то просто поставьте ключ -pedantic и Вам скажут что нельзя так делать по стандарту
Yandex
Объявления
26.12.2013, 09:38     Массив заранее неизвестного размера
Ответ Создать тему
Опции темы

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