Форум программистов, компьютерный форум CyberForum.ru

Работа с вводом. Нужно в зависимости от кол. введенных чисел выделить память - C++

Восстановить пароль Регистрация
 
supra7sky
 Аватар для supra7sky
15 / 15 / 1
Регистрация: 07.02.2013
Сообщений: 123
19.03.2013, 17:36     Работа с вводом. Нужно в зависимости от кол. введенных чисел выделить память #1
С++
Нужно выделять память в том количестве, сколько было введено чисел до нажатия Enter.
Как такое реализовать?
хз как в гугл прописать даже. Подскажите с помощью каких функций или пример в коде
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2013, 17:36     Работа с вводом. Нужно в зависимости от кол. введенных чисел выделить память
Посмотрите здесь:

Нужно выделить память в куче C++
нужно написать программу которая будет вместо введенных пользователем чисел, выводить* C++
C++ Для чисел от -50 до 50 найти кол-во четных отрицательных и кол-во положительных нечетных чисел
Нужно выделить всю доступную процессу память блоками по 13 байт C++
for,while,do while (программа должна сообщить кол-во введенных слов) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
19.03.2013, 18:06     Работа с вводом. Нужно в зависимости от кол. введенных чисел выделить память #2
Не очень понятно, что имеется в виду под этим:
Цитата Сообщение от supra7sky Посмотреть сообщение
сколько было введено чисел до нажатия Enter.
Но в общем случае динамическое выделение памяти делается через new:
C++
1
2
3
4
5
int n; // кол-во
std::cin >> n; // считываем с консоли
int* arr = new int[n]; // выделяем память
// ... делаем, что надо с памятью: заполняем, обрабатываем ...
delete [] arr; // освобождаем память
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
19.03.2013, 18:18     Работа с вводом. Нужно в зависимости от кол. введенных чисел выделить память #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <algorithm>
#include <iostream>
#include <cstring>
 
int main ()
{
    std::string elements;
    std::getline(std::cin, elements);
    int spaceCounter = (std::count(elements.begin(), elements.end(), ' ') + 1);
 
    int *array = new int [spaceCounter];
    std::cout << "Memory allocated for " << spaceCounter << " elements: ";
    for (int i = 0; i < spaceCounter; i++)
        std::cout << (array[i] = i + 1) << " ";
    std::cout << std::endl;
 
    delete [] array;
    return 0;
}
supra7sky
 Аватар для supra7sky
15 / 15 / 1
Регистрация: 07.02.2013
Сообщений: 123
19.03.2013, 18:27  [ТС]     Работа с вводом. Нужно в зависимости от кол. введенных чисел выделить память #4
Размер массива, под который в дальнейшем нужно будет выделить память неизвестен. Нужно определить сколько выделить памяти в зависимости от количества введенных чисел через пробел и после нажатия Enter создать массив, и заполнить его этими данными.
Например есть цикл while (true) { cin >> arr[ i ]; size++ }
Все данные вводятся через пробел. Нужно среагировать на нажатие Enter и выйти из цикла.
Использовать какое то особое число, как стоп-условие нельзя.
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
19.03.2013, 18:35     Работа с вводом. Нужно в зависимости от кол. введенных чисел выделить память #5
Цитата Сообщение от supra7sky Посмотреть сообщение
Размер массива, под который в дальнейшем нужно будет выделить память неизвестен. Нужно определить сколько выделить памяти в зависимости от количества введенных чисел через пробел и после нажатия Enter создать массив
а я для кого это написал выше?
supra7sky
 Аватар для supra7sky
15 / 15 / 1
Регистрация: 07.02.2013
Сообщений: 123
19.03.2013, 18:46  [ТС]     Работа с вводом. Нужно в зависимости от кол. введенных чисел выделить память #6
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
а я для кого это написал выше?
Я отвечал Tulosba.
Спасибо, примерно понял, только у меня почему то namespace std не содержит члена getline

Все заголовочные подключил. VS 2010
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
19.03.2013, 18:47     Работа с вводом. Нужно в зависимости от кол. введенных чисел выделить память #7
Если не заморачиваться с new, то можно сделать так:
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
#include <algorithm>
#include <iostream>
#include <string>
#include <sstream> 
#include <iterator>
 
int main ()
{
    std::string elements;
    std::getline(std::cin, elements);
    
    std::stringstream ss(elements);
    std::istream_iterator<std::string> begin(ss);
    std::istream_iterator<std::string> end;
    
    std::vector<int> v;
    
    std::transform( begin, end, std::back_inserter(v), []( std::string s ) -> int { return strtol( s.c_str(), 0, 10 ); } );
 
    for( auto& i: v )
    {
       std::cout << i << ",";
    }
   
    std::cout << std::endl;
 
    return 0;
}
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
19.03.2013, 18:57     Работа с вводом. Нужно в зависимости от кол. введенных чисел выделить память #8
Цитата Сообщение от supra7sky Посмотреть сообщение
Спасибо, примерно понял, только у меня почему то namespace std не содержит члена getline
Не работает getline в VS2010
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2013, 21:09     Работа с вводом. Нужно в зависимости от кол. введенных чисел выделить память
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.03.2013, 21:09     Работа с вводом. Нужно в зависимости от кол. введенных чисел выделить память #9
Цитата Сообщение от Ev[G
eN;4278287]а я для кого это написал выше?
Ev[G]eN, а это где?
Цитата Сообщение от supra7sky Посмотреть сообщение
Нужно определить сколько выделить памяти в зависимости от количества введенных чисел через пробел и после нажатия Enter создать массив, и заполнить его этими данными.
, т.е. заполнить созданный массив введёнными числами.

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
#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#include <cstdlib>
using namespace std;
 
int main ()
{
    string elements;
    getline(cin, elements);
    int spaceCounter = (count(elements.begin(), elements.end(), ' ') + 1);
 
    int *array = new int [spaceCounter];
    cout << "Memory allocated for " << spaceCounter << " elements: ";
    
    stringstream s;
    s << elements;
 
    for (int i = 0; i < spaceCounter; i++)
    {
        s >> array[i];
        cout << array[i] << " ";
    }
    cout << endl;
 
    delete [] array;
   
    system("pause");
    return 0;
}
Добавлено через 1 минуту
Ещё бы определить тип чисел... Под что массив создавать...
Yandex
Объявления
19.03.2013, 21:09     Работа с вводом. Нужно в зависимости от кол. введенных чисел выделить память
Ответ Создать тему
Опции темы

Текущее время: 00:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru