Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
5 / 5 / 0
Регистрация: 07.06.2009
Сообщений: 62
1

Можно ли создать вектор заранее неизвестного размера?

08.06.2009, 15:36. Просмотров 1685. Ответов 7
Метки нет (Все метки)

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

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

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

Как можно создать массив разных объектов, заранее неизвестного размера?
если нужно создать несколько однотипных объектов программно то один скажем, создается кодом myobj:...

Масив заранее неизвестного размера
Имеется массив пользовательского типа данных Account, у которого число ячеек заранее неизвестно,...

7
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,721
08.06.2009, 15:40 2
А чем строка не устраивает? По сути - тот же вектор. Под описанные условия - идеально катит.
0
5 / 5 / 0
Регистрация: 07.06.2009
Сообщений: 62
08.06.2009, 15:57  [ТС] 3
со строкой у меня возникают следующие проблемы - если я задаю char chislo[256] - в конце концов функция выводит 256 значений, даже если в числе всего 5 элементов. Если пишу char chislo[] - компилятор не хочет обрабатывать.
Само задание - с помощью рекурсии перевернуть число.
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
vector <int> rec2(vector<int> vec1, char *chislo1, int b)
{
    if (b==0)
    {
        return vec1;
    }
    else
    {
        vec1.push_back(chislo1[b]);
        b=b-1;
        return rec2(vec1, chislo1, b);
    }
}
int main()
{
    setlocale (LC_ALL, "Russian");
    cout<<"Лабораторная работа №12"<<endl;
    cout<<"Вариант №5"<<endl;
    cout<<"Выберите номер задания"<<endl;
    cout<<"0 - Выход из программы"<<endl;
    cout<<"2 - Второе задание"<<endl;
    char temp;
    cin>>temp;
    switch (temp)
    {
    case '0':
        {
            cout<<"До свидания!"<<endl;
            break;
        }
    case '2':
        {
            cout<<"Введите число"<<endl;
            vector<int>vec1;
            vector<int>vec2;
            char chislo1[256];
            int b;
            cin>>chislo1;
                        b=sizeof(chislo1);
            vec2=rec2(vec1, chislo1, b);
            
            for (i=0; i<b; i++)
                       {
            cout<<vec2[i]
                        }
            
            cout<<endl;
            break;
        }
    }
 
    system ("pause");
    return 0;
}
0
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,721
08.06.2009, 16:00 4
вместо b=sizeof(chislo1); используй b=strlen(chislo1); только не забудь #include <string.h>
sizeof выдаёт размер отведённой под переменную памяти. А strlen - длину строки без завершающего её нуля.
0
5 / 5 / 0
Регистрация: 07.06.2009
Сообщений: 62
08.06.2009, 17:23  [ТС] 5
Подправил ошибки, но всё равно не работает:'(
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <vector>
#include <string.h>
#include <cmath>
using namespace std;
vector <int> rec2(vector<int> vec1, char *chislo1, int b)
{
    if (b==0)
    {
        return vec1;
    }
    else
    {
        vec1.push_back(chislo1[b]);
        b--;
        return rec2(vec1, chislo1, b);
    }
}
int main()
{
    setlocale (LC_ALL, "Russian");
    cout<<"Лабораторная работа №12"<<endl;
    cout<<"Вариант №5"<<endl;
    cout<<"Выберите номер задания"<<endl;
    cout<<"0 - Выход из программы"<<endl;
    cout<<"1 - Первое задание"<<endl;
    cout<<"2 - Второе задание"<<endl;
    char temp;
    cin>>temp;
    switch (temp)
    {
    case '0':
        {
            cout<<"До свидания!"<<endl;
            break;
        }
    case '2':
        {
            cout<<"Введите число"<<endl;
            vector<int>vec1;
            vector<int>vec2;
            char chislo1[256];
            int b;
            cin>>chislo1;
            b=strlen(chislo1);
            vec2=rec2(vec1, chislo1, b);
            for (int i=0; i<b; i++)
            {
            cout<<vec2[i];
            }
            cout<<endl;
            break;
        }
    }
 
    system ("pause");
    return 0;
}
0
692 / 383 / 51
Регистрация: 22.01.2009
Сообщений: 1,135
08.06.2009, 18:01 6
Вектор, наверно, как то так заполнять надо:
C++
1
2
3
        char tmp[1]; 
        memcpy(tmp, &chislo1[b], 1);
        vec1.push_back(atoi(tmp));
0
5 / 5 / 0
Регистрация: 07.06.2009
Сообщений: 62
08.06.2009, 18:05  [ТС] 7
что такое memcpy и atoi?
0
692 / 383 / 51
Регистрация: 22.01.2009
Сообщений: 1,135
08.06.2009, 19:07 8
memcpy (dest, src, cnt); копирует cnt байтов из src в dest. А atoi преобразовывает символьную строку в целое значение.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.06.2009, 19:07

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Массив заранее неизвестного размера
Скажите как создать массив за рание не известной размерности. Искал по форумам приимеры описания,...

Создание структуры неизвестного заранее размера
Приветствую всех. Подскажите как лучше поступить. Есть некая структура, которая должна заполняться...

Массив заранее неизвестного размера в UDP
Добрый день, тоже столкнулся с вопросом инициализации массива неизвестного размера... Задача...

Создать массив неизвестного размера
string q= new string; Изначально не знаю сколько в этом массиве у меня будет элементов, как...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.