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

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

28.12.2016, 18:05. Показов 2887. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2016, 18:05
Ответы с готовыми решениями:

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

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

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

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

16
Супер-модератор
6081 / 2821 / 1298
Регистрация: 04.03.2013
Сообщений: 5,736
Записей в блоге: 1
28.12.2016, 18:12 2
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
Модератор
Эксперт С++
12460 / 10018 / 6031
Регистрация: 18.12.2011
Сообщений: 26,824
28.12.2016, 19:12 3
Лучший ответ Сообщение было отмечено 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  [ТС] 4
ildwine, а зачем переменная а=0;
0
Модератор
Эксперт С++
12460 / 10018 / 6031
Регистрация: 18.12.2011
Сообщений: 26,824
28.12.2016, 21:19 5
Цитата Сообщение от ScreannyS Посмотреть сообщение
зачем переменная а=0;
Это Вас надо спросить, зачем вы ее объявили.
1
Don't worry, be happy
17769 / 10534 / 2034
Регистрация: 27.09.2012
Сообщений: 26,505
Записей в блоге: 1
28.12.2016, 21:38 6
Лучший ответ Сообщение было отмечено 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
Супер-модератор
6081 / 2821 / 1298
Регистрация: 04.03.2013
Сообщений: 5,736
Записей в блоге: 1
28.12.2016, 21:58 7

Не по теме:

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



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

Не по теме:

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

0
Любитель чаепитий
3734 / 1793 / 562
Регистрация: 24.08.2014
Сообщений: 5,994
Записей в блоге: 1
28.12.2016, 22:02 8
Лучший ответ Сообщение было отмечено 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
Эксперт С++
3219 / 1746 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
29.12.2016, 07:26 9
Цитата Сообщение от Croessmah Посмотреть сообщение
std::vector
Правильно! Вообще, предлагаю считать, что в нашем плюсовом разделе под словами "массив" и "цикл" подразумеваются вектор и алгоритм. Кто не согласен, тот пускай в сишный раздел обращается!
1
zss
29.12.2016, 08:56
  #10

Не по теме:

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

0
Эксперт С++
3219 / 1746 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
29.12.2016, 09:13 11
Цитата Сообщение от zss Посмотреть сообщение
Проблема в том, что у тут не просто С++, а с добавкой "для начинающих".
Ну, я уже в курсе, что под "С++ для начинающих" вы понимаете Си. Некоторые, и в том числе Страуструп, с вами не согласны, он рекомендует начинать С++ прямо с С++ и сразу изучать STL. Не знаю что вы в ней находите такого страшного. Обычно страх у людей незнакомые слова вызывают, так пускай учатся лучше, тогда и бояться не будут, чего их, бездельников, жалеть?
Так-то С++ считается одним из самых сложных языков программирования, поэтому изучать его пугаясь и придуриваясь не получится, таки следует набраться достаточного мужества!
2
Don't worry, be happy
17769 / 10534 / 2034
Регистрация: 27.09.2012
Сообщений: 26,505
Записей в блоге: 1
29.12.2016, 13:15 12

Не по теме:

Цитата Сообщение от 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Эксперт С++
8191 / 5041 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
29.12.2016, 13:18 13
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
Don't worry, be happy
17769 / 10534 / 2034
Регистрация: 27.09.2012
Сообщений: 26,505
Записей в блоге: 1
29.12.2016, 13:21 14
Цитата Сообщение от 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Эксперт С++
8191 / 5041 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
29.12.2016, 13:23 15
Цитата Сообщение от Croessmah Посмотреть сообщение
Ну дых его, наверное, предполагается где-то использовать.
Ну почему же. Была тут недавно задачка отсортировать числа, вводимые с клавиатуры. Меняем std::vector на std::set и всё. тут же задачкой может быть "разделить вводимые числа запятой". Нам же нежно куда-то собрать данные прежде чем вывести результат.
0
Любитель чаепитий
3734 / 1793 / 562
Регистрация: 24.08.2014
Сообщений: 5,994
Записей в блоге: 1
29.12.2016, 18:16 16
Цитата Сообщение от Croessmah Посмотреть сообщение
А вот так потянет
А в чём смысл оборачивания в скобки? Вроде на cppreference такой конструктор не описан, как какой-то с++03 или как с++11.
0
16277 / 8836 / 2166
Регистрация: 30.01.2014
Сообщений: 15,273
29.12.2016, 19:44 17
Цитата Сообщение от GbaLog- Посмотреть сообщение
А в чём смысл оборачивания в скобки?
https://en.wikipedia.org/wiki/Most_vexing_parse
3
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.12.2016, 19:44
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru