Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/211: Рейтинг темы: голосов - 211, средняя оценка - 4.51
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024

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

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

Студворк — интернет-сервис помощи студентам
Возможно сейчас произвучит тупой вопрос,не судите строго,но можно каким-нибудь образом сделать чтобы размер массива задавался пользователем?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.09.2010, 23:27
Ответы с готовыми решениями:

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

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

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

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

C++
1
delete [] Arr;
1
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
22.09.2010, 23:35  [ТС]
Возможно сейчас прозвучит второй тупой вопрос,но это что?объясните,со слов людей лучше доходит
0
38 / 38 / 10
Регистрация: 02.06.2010
Сообщений: 105
22.09.2010, 23:39
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;     //удаляем выделенную память, так как сама она не очищается.
2
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
22.09.2010, 23:42
а как выделить память под массив , когда пользователь сам не знает какой длины будет массив??
0
38 / 38 / 10
Регистрация: 02.06.2010
Сообщений: 105
22.09.2010, 23:45
а кто знает?) или юзайте стл - векторы, их ресайзить можно.
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
22.09.2010, 23:46
Если не знаеш какой размер масива,юзай вектора.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
22.09.2010, 23:53
Цитата Сообщение от REALIST07 Посмотреть сообщение
Возможно сейчас прозвучит второй тупой вопрос,но это что?
Обратитесь к литературе, а именно к теме посвященной динамической памяти. Спрашивая на форумах, Вы мало чего поймете.
0
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
23.09.2010, 00:00
а можно какой нибудь пример с вектором
0
38 / 38 / 10
Регистрация: 02.06.2010
Сообщений: 105
23.09.2010, 00:01
http://www.cplusplus.com/reference/stl/vector/
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
23.09.2010, 00:01
suv121, конкретный пример здесь.
0
0 / 0 / 0
Регистрация: 08.07.2012
Сообщений: 14
26.12.2013, 08:56
Сразу прошу прощения за некропост, однако гугл даёт сюда первую ссылку, поэтому решил поделится - может кому-то пригодится в будущем.
Столкнулся с похожей проблемой, что и ТС.
Есть ещё один способ без использоания вектора, да и по сути, это не динамический массив.
Насколько я понял, ругается компиллятор на точ, что не знает сколько памяти выделить, и не может зависеть от переменной. однако, компиллируется "сверху вниз" и, например, из функции приходит уже известное значение - не переменая. возможно мыслю не совсем верно, однако код работает:
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 строке присвоить значение - вывалится в ошибку
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,028
Записей в блоге: 1
26.12.2013, 09:38
Цитата Сообщение от J.A.B. Посмотреть сообщение
Есть ещё один способ без использоания вектора, да и по сути, это не динамический массив.
Это нестандартное расширение.
Если компилируете с помощью MinGW, то просто поставьте ключ -pedantic и Вам скажут что нельзя так делать по стандарту
0
0 / 0 / 0
Регистрация: 08.07.2012
Сообщений: 14
26.12.2013, 10:00
Цитата Сообщение от Croessmah Посмотреть сообщение
расширение.
расширение? простите, не очень вас понял
насчёт -pedantic - как я понимаю, в linker settings? если да - ошибок не выдал. codeblocks 12.11
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,028
Записей в блоге: 1
26.12.2013, 10:09
Цитата Сообщение от J.A.B. Посмотреть сообщение
насчёт -pedantic - как я понимаю, в linker settings?
причем тут линкер вообще?


Цитата Сообщение от J.A.B. Посмотреть сообщение
расширение? простите, не очень вас понял
А что тут понимать? Производители компиляторов добавляют в свои расширения языка, которые являются не стандартными и скорее всего не поддерживаются другими компиляторами
1
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
26.12.2013, 10:20
Цитата Сообщение от J.A.B. Посмотреть сообщение
расширение?
Диалект, наречие.
0
0 / 0 / 0
Регистрация: 08.07.2012
Сообщений: 14
26.12.2013, 10:24
Цитата Сообщение от Croessmah Посмотреть сообщение
А что тут понимать? Производители компиляторов добавляют в свои расширения языка, которые являются не стандартными и скорее всего не поддерживаются другими компиляторами
понял вас. да, пожалуй вы правы. с педантиком действительно ошибка.
я не спорю - способ действительно кривоват, но ведь работает пусть даже и только под mingw
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.12.2013, 10:24
Помогаю со студенческими работами здесь

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

Ввод текста неизвестного размера в массив
(Консольное приложение) Я хочу сделать так чтобы при вводе текста программа записывала каждый символ по порядку (в том числе и пробел) из...

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

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

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


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru