Другие языки программирования и технологии
Как определить размер массива в процессе ввода? C++
Добрый день. Подскажите, как определить размер массива в процессе ввода. Например, пользователь ввел 5 цифр, значит должен создаться массив из 5 элементов. Возможно ли это? Спасибо.
Использовать векторы (параметризуемый тип vector). Для двумерного массива - векторы векторов. Вектор - это массив, размер которого при внесении в него новых элементов автоматически приспосабливается. И еще множество полезных свойств.
Если пользоваться только средствами С, то можно использовать динамический массив с использованием функции realloc при каждом вводе элемента, но тип vector C++ гораздо удобнее.
Ну и, наконец, как делают начинающие, можно использовать обычные статические массивы, размер которых задан с запасом. Например, объявить сразу массив с размером в тысячу элементов, и пусть себе из них используются лишь пять, что нам, памяти жалко?
Если пользоваться только средствами С, то можно использовать динамический массив с использованием функции realloc при каждом вводе элемента, но тип vector C++ гораздо удобнее.
Ну и, наконец, как делают начинающие, можно использовать обычные статические массивы, размер которых задан с запасом. Например, объявить сразу массив с размером в тысячу элементов, и пусть себе из них используются лишь пять, что нам, памяти жалко?
for(i=0;m[i]!=0;++i);
i-1 будет равно длине массива....
i-1 будет равно длине массива....
Создавать массивы динамически через указатели
вот отрывок примера когда создается массив размера m x n
int m,n;
cout << "Введите размерность массива m, n" <<endl;
cin >> m >> n;
double** ar = new double* [m];
for (int i = 0; i<m; i++)
ar[i] = new double [n];
cout << "Создаем массив с размерностью m на n" <<endl;
в твоем случае будет
cin >> m;
double* ar = new double* [m];
и далее по условию заполняешь массив
cin >> ar[i]
обрати внимание у тебя одномерный массив, поэтому указывается только один указатель, а в отрывке выше 2-мерный массив, поэтом сразу за типом 2 указателя
double** ar = new double* [m];
вот отрывок примера когда создается массив размера m x n
int m,n;
cout << "Введите размерность массива m, n" <<endl;
cin >> m >> n;
double** ar = new double* [m];
for (int i = 0; i<m; i++)
ar[i] = new double [n];
cout << "Создаем массив с размерностью m на n" <<endl;
в твоем случае будет
cin >> m;
double* ar = new double* [m];
и далее по условию заполняешь массив
cin >> ar[i]
обрати внимание у тебя одномерный массив, поэтому указывается только один указатель, а в отрывке выше 2-мерный массив, поэтом сразу за типом 2 указателя
double** ar = new double* [m];
поставленная задача в корне не правильная! Если ты хочешь получить данные от пользователя, умные люди придумали - переменные. В твоём случае, я так понимаю, вводятся символы, для них есть - символьные/строковые переменные, и "туева хуча" процедур и функций для работы с ними. Среди которых есть и функции которые возвращают размер введённых данных.
Похожие вопросы
- Язык Си|Будет ли ошибкой, если я буду увеличивать размер массива по мере ввода в него?
- Вывести название массива с помощью char, C++
- Заполнить массив против часовой стрелки начиная с нижнего правого угла размер массива N*N и допустить возможность измене
- как определить размер динамического массива обектов??
- Если пользователь вводит размер массива, является ли он динамическим ?
- Массив как аргумент функции C++
- Правильно ли я понимаю, что вывод массива на экран в c++ возможен только через перебор элементов?
- Почему нельзя настраивать массив в процессе работы программы? Pascal ABC ну и если так вообще везде?
- C++ Везде написано, что sizeof() с массивом в качестве аргумента возвращает полный размер. А в данной функции не так.
- C++ Проверка правильности ввода данных.
Задачи подобного рода дают в учебных заведениях, для того, чтобы студенты научились работать с указателями и динамическими массивами.