Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 17.10.2016
Сообщений: 54

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

28.12.2016, 18:05. Показов 3646. Ответов 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 / 2955 / 1300
Регистрация: 04.03.2013
Сообщений: 5,796
Записей в блоге: 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
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,238
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
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,238
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 / 2955 / 1300
Регистрация: 04.03.2013
Сообщений: 5,796
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru