0 / 0 / 0
Регистрация: 17.10.2016
Сообщений: 54

Ввод массива заранее неизвестной длины

28.12.2016, 18:05. Показов 3659. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main() 
{
    int arr[n], a = 0;
    cout << "Вводите числа:"<<endl;
cin>>arr[n];
 
\\Помощь нужна вот тут.
 
    system("pause");
    return 0;
}
Мне нужно чтобы к примеру пользователь вводил n количество чисел. и в чем у меня ошибка,я ввожу одно число и у меня заканчивается программа
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.12.2016, 18:05
Ответы с готовыми решениями:

Ввод массива заранее неизвестной длины
#include &lt;iostream&gt; using namespace std; int main () { int n; // ввод неизвестного массива int*mass = new int ; for (int i...

Ввод массива неизвестной длины
Добрый день! Уважаемые знатоки, вопрос скорее всего тривиальный, но тем не менее решения у меня нет. Нужно задать вектор через пробелы...

Ввод динамического массива неизвестной длины
Нужно создать динамический массив целых чисел, размер которого неизвестен, а каждое введенное число должно сразу помещатьмя в массив,...

16
Почетный модератор
 Аватар для ildwine
6201 / 2963 / 1300
Регистрация: 04.03.2013
Сообщений: 5,797
Записей в блоге: 1
28.12.2016, 18:12
C++
1
2
3
int n = 10, arr[n], a = 0, i;
cout << "Вводите числа:"<<endl;
for (i = 0; i < n; i++) cin >> arr[i];
Добавлено через 27 секунд
Вводить числа надо в цикле.
1
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
28.12.2016, 19:12
Лучший ответ Сообщение было отмечено ildwine как решение

Решение

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
#include <iostream>
//#include <cmath>
#include <clocale>
using namespace std;
 
int main() 
{
    setlocale(LC_ALL,"Rus");
    int n;
    cout << "Введите размер массива:"<<endl;
    cin>>n;
    int* arr=new int[n];
    //Помощь нужна вот тут.
 
    for (int i = 0; i < n; i++)
    {
        cout << "Введите arr["<<i<<"]:";
        cin >> arr[i];
    }
 
    for (int i = 0; i < n; i++)
    {
        cout << arr[i]<<" ";
    }
    cout<<endl;
    delete[] arr;
    system("pause");
    return 0;
}
p.s. Вполне могли бы посмотреть в темах по массивам, которых тут 100500 (хотя бы в тех, которые приведены внизу этой страницы).
1
0 / 0 / 0
Регистрация: 17.10.2016
Сообщений: 54
28.12.2016, 21:11  [ТС]
ildwine, а зачем переменная а=0;
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
28.12.2016, 21:19
Цитата Сообщение от ScreannyS Посмотреть сообщение
зачем переменная а=0;
Это Вас надо спросить, зачем вы ее объявили.
1
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
28.12.2016, 21:38
Лучший ответ Сообщение было отмечено ildwine как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
//g++  4.9.3
 
#include <iostream>
#include <vector>
#include <iterator>
int main()
{
    std::vector<int> vec{std::istream_iterator<int>(std::cin), std::istream_iterator<int>()};
    for(auto e: vec)
        std::cout << e << ", ";
}
http://rextester.com/SDLW17584
2
Почетный модератор
 Аватар для ildwine
6201 / 2963 / 1300
Регистрация: 04.03.2013
Сообщений: 5,797
Записей в блоге: 1
28.12.2016, 21:58

Не по теме:

Croessmah, это в С++11 или в каком?



Добавлено через 36 секунд

Не по теме:

или просто в коллекциях?

0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
28.12.2016, 22:02
Лучший ответ Сообщение было отмечено ildwine как решение

Решение

Не по теме:

Цитата Сообщение от ildwine Посмотреть сообщение
это в С++11 или в каком?
Если убрать список инициализации в векторе, то и на с++98 потянет.
Ну и ещё range-based for заменить на обычный.



Добавлено через 2 минуты

Не по теме:

Вот. :)

C++
1
2
3
4
5
6
7
8
9
10
11
//g++  4.9.3
 
#include <iostream>
#include <vector>
#include <iterator>
int main()
{
    std::vector<int> vec(std::istream_iterator<int>(std::cin), std::istream_iterator<int>());
    for(size_t it = 0; it < vec.size(); ++it)
        std::cout << vec[it] << ", ";
}
http://rextester.com/KLGZ47848

2
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
29.12.2016, 07:26
Цитата Сообщение от Croessmah Посмотреть сообщение
std::vector
Правильно! Вообще, предлагаю считать, что в нашем плюсовом разделе под словами "массив" и "цикл" подразумеваются вектор и алгоритм. Кто не согласен, тот пускай в сишный раздел обращается!
1
29.12.2016, 08:56

Не по теме:

Mr.X, Проблема в том, что у тут не просто С++, а с добавкой "для начинающих".
Поэтому, надо рассматривать возможности языка, начиная с простейших.
А для новичков слова "контейнер", "поток" - это как заклинания.

0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
29.12.2016, 09:13
Цитата Сообщение от zss Посмотреть сообщение
Проблема в том, что у тут не просто С++, а с добавкой "для начинающих".
Ну, я уже в курсе, что под "С++ для начинающих" вы понимаете Си. Некоторые, и в том числе Страуструп, с вами не согласны, он рекомендует начинать С++ прямо с С++ и сразу изучать STL. Не знаю что вы в ней находите такого страшного. Обычно страх у людей незнакомые слова вызывают, так пускай учатся лучше, тогда и бояться не будут, чего их, бездельников, жалеть?
Так-то С++ считается одним из самых сложных языков программирования, поэтому изучать его пугаясь и придуриваясь не получится, таки следует набраться достаточного мужества!
2
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
29.12.2016, 13:15

Не по теме:

Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, я уже в курсе, что под "С++ для начинающих" вы понимаете Си. Некоторые, и в том числе Страуструп, с вами не согласны, он рекомендует начинать С++ прямо с С++ и сразу изучать STL.
И далеко не один Страуструп такого мнения.
Даже книженцию видел, где изучение C++
начинается с изучения работы с string, vector и т.д.


Цитата Сообщение от GbaLog- Посмотреть сообщение
Вот.
Конкретно так оно может не потянуть. Вот: http://rextester.com/FHSEML86565
А вот так потянет:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <vector>
#include <iterator>
int main()
{
    std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
    for(size_t it = 0; it < vec.size(); ++it)
        std::cout << vec[it] << ", ";
}
Цитата Сообщение от Mr.X Посмотреть сообщение
то в нашем плюсовом разделе под словами "массив" и "цикл" подразумеваются вектор и алгоритм
Всё-таки мод массивом надо подразумевать массив,
если будем говорить о типах.
А если о структурах данных, то уже как-то без разницы.

Добавлено через 2 минуты
Цитата Сообщение от ildwine Посмотреть сообщение
это в С++11 или в каком?
Конструктор у вектора,
который принимает два итератора
имеется давным давно,
итераторы ввода тоже.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
29.12.2016, 13:18
Croessmah, Можно сразу передать контейнер в цикл
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <vector>
#include <iterator>
int main()
{
    for(auto e: std::vector<int>{std::istream_iterator<int>(std::cin), std::istream_iterator<int>()})
        std::cout << e << ", ";
}
http://rextester.com/RDM37216
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
29.12.2016, 13:21
Цитата Сообщение от MrGluck Посмотреть сообщение
Можно сразу передать контейнер в цикл
Ну дык его, наверное, предполагается где-то использовать.
Иначе и контейнер не нужен... как и цикл
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::copy(
        std::istream_iterator<int>(std::cin), 
        std::istream_iterator<int>(), 
        std::ostream_iterator<int>(std::cout, ", ")
    );
}
http://rextester.com/THY76292
Или вообще вот так:

C++
1
2
3
4
5
6
#include <iostream>
 
int main()
{
    std::cout << std::cin.rdbuf();
}
http://rextester.com/PKGWX4853
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
29.12.2016, 13:23
Цитата Сообщение от Croessmah Посмотреть сообщение
Ну дых его, наверное, предполагается где-то использовать.
Ну почему же. Была тут недавно задачка отсортировать числа, вводимые с клавиатуры. Меняем std::vector на std::set и всё. тут же задачкой может быть "разделить вводимые числа запятой". Нам же нежно куда-то собрать данные прежде чем вывести результат.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
29.12.2016, 18:16
Цитата Сообщение от Croessmah Посмотреть сообщение
А вот так потянет
А в чём смысл оборачивания в скобки? Вроде на cppreference такой конструктор не описан, как какой-то с++03 или как с++11.
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
29.12.2016, 19:44
Цитата Сообщение от GbaLog- Посмотреть сообщение
А в чём смысл оборачивания в скобки?
https://en.wikipedia.org/wiki/Most_vexing_parse
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.12.2016, 19:44
Помогаю со студенческими работами здесь

Считывание массива неизвестной длины
Имеется набор чисел. Про их количество ничего заранее неизвестно, кроме того, что оно кратно 10. Можно ли как-то сделать прерывание ввода...

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

Функция для ввода массива неизвестной длины
Как реализовать ввод массива неизвестной длины Без использования vector

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

Открытые функции класса: ввод массива, вывод массива, определение длины вектора
Данные класса: массив N(10). Открытые функции класса: ввод массива, вывод массива, определение длины вектора. Длина массива определяется...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru