15 / 15 / 5
Регистрация: 07.02.2013
Сообщений: 123
1

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

19.03.2013, 17:36. Показов 764. Ответов 8
Метки нет (Все метки)

С++
Нужно выделять память в том количестве, сколько было введено чисел до нажатия Enter.
Как такое реализовать?
хз как в гугл прописать даже. Подскажите с помощью каких функций или пример в коде
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.03.2013, 17:36
Ответы с готовыми решениями:

Найти и выделить цветом минимальное или максимальное (в зависимости от установленного переключателя) из введенных чисел
Зраствуйте )))я не знаю как решить задачку(((помогите пожалуйста((( Написать программу решения...

Как динамически выделить память под массив неизвестной длинны? Длина определяется вводом с командной строки
Например, надо получить фамилию, имя и отчество пользователя через командную строку.

Нужно выделить память в куче
Работаю с довольно большим объемом данных, записанных матрицей. Для этого нужно выделить память в...

Нужно выделить всю доступную процессу память блоками по 13 байт
Нужно выделить всю доступную процессу память блоками по 13 байт. Использовать нужно две функции :...

8
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
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; // освобождаем память
0
Mobile Software Engineer
Эксперт С++
5365 / 1584 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
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;
}
1
15 / 15 / 5
Регистрация: 07.02.2013
Сообщений: 123
19.03.2013, 18:27  [ТС] 4
Размер массива, под который в дальнейшем нужно будет выделить память неизвестен. Нужно определить сколько выделить памяти в зависимости от количества введенных чисел через пробел и после нажатия Enter создать массив, и заполнить его этими данными.
Например есть цикл while (true) { cin >> arr[ i ]; size++ }
Все данные вводятся через пробел. Нужно среагировать на нажатие Enter и выйти из цикла.
Использовать какое то особое число, как стоп-условие нельзя.
0
Mobile Software Engineer
Эксперт С++
5365 / 1584 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
19.03.2013, 18:35 5
Цитата Сообщение от supra7sky Посмотреть сообщение
Размер массива, под который в дальнейшем нужно будет выделить память неизвестен. Нужно определить сколько выделить памяти в зависимости от количества введенных чисел через пробел и после нажатия Enter создать массив
а я для кого это написал выше?
1
15 / 15 / 5
Регистрация: 07.02.2013
Сообщений: 123
19.03.2013, 18:46  [ТС] 6
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
а я для кого это написал выше?
Я отвечал Tulosba.
Спасибо, примерно понял, только у меня почему то namespace std не содержит члена getline

Все заголовочные подключил. VS 2010
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
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;
}
1
Mobile Software Engineer
Эксперт С++
5365 / 1584 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
19.03.2013, 18:57 8
Цитата Сообщение от supra7sky Посмотреть сообщение
Спасибо, примерно понял, только у меня почему то namespace std не содержит члена getline
Не работает getline в VS2010
1
5488 / 4883 / 831
Регистрация: 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 минуту
Ещё бы определить тип чисел... Под что массив создавать...
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.03.2013, 21:09
Помогаю со студенческими работами здесь

Работа со структурой аэрофлот - как выделить память?
Создать структуру с именем аэрофлот и пунктами (указаны в структуре).Язык Си ПИшу структуру первый...

Работа с подсчетом чисел, введенных в textBox
Есть 1 textbox и 4 label. В textBox вводятся числа от 0 до 10ти n-ное количество. В 1ом Label...

Подсчет общего кол-ва записей в таблице, с вводом в окно формы
Подскажите, пожалуйста, какой командой Access я могла бы организовать подсчет общего кол-ва...

Нужно чтобы среди введенных чисел выбирал наибольшее и выводил его на экран.
Нужно чтобы среди введенных чисел выбирал наибольшее и выводил его на экран. Помогите доделать. ...


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

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

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