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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kemsit
4 / 4 / 1
Регистрация: 07.06.2009
Сообщений: 62
#1

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

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

Скажите пожалуйста, можно ли создать вектор заранее неизвестного размера так, чтобы пользователю перед его заполнением не нужно было указывать его размер, а заканчивалось заполнение вектора нажатием enter? Например пользователю предлагается ввести число, он его вводит без пробелов, каждая цифра заносится в элемент вектора, а после нажатия пользователем enter, заполнение заканчивается.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2009, 15:36     Можно ли создать вектор заранее неизвестного размера?
Посмотрите здесь:
Массив заранее неизвестного размера C++
C++ Как передать в функцию указатель на двумерный массив заранее неизвестного размера?
Передача функции заранее неизвестного объекта C++
Функция с переменным числом параметров заранее неизвестного типа C++
Как создать массив или вектор размера больше чем 0x7fffffff? C++
C++ Массив неизвестного размера
Умножение матрицы неизвестного размера C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Delphin_KKC
UNIX-way
709 / 494 / 17
Регистрация: 15.01.2009
Сообщений: 1,721
08.06.2009, 15:40     Можно ли создать вектор заранее неизвестного размера? #2
А чем строка не устраивает? По сути - тот же вектор. Под описанные условия - идеально катит.
Kemsit
4 / 4 / 1
Регистрация: 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;
}
Delphin_KKC
UNIX-way
709 / 494 / 17
Регистрация: 15.01.2009
Сообщений: 1,721
08.06.2009, 16:00     Можно ли создать вектор заранее неизвестного размера? #4
вместо b=sizeof(chislo1); используй b=strlen(chislo1); только не забудь #include <string.h>
sizeof выдаёт размер отведённой под переменную памяти. А strlen - длину строки без завершающего её нуля.
Kemsit
4 / 4 / 1
Регистрация: 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;
}
FunDuck
688 / 379 / 4
Регистрация: 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));
Kemsit
4 / 4 / 1
Регистрация: 07.06.2009
Сообщений: 62
08.06.2009, 18:05  [ТС]     Можно ли создать вектор заранее неизвестного размера? #7
что такое memcpy и atoi?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2009, 19:07     Можно ли создать вектор заранее неизвестного размера?
Еще ссылки по теме:
C++ Чтение файла неизвестного размера
Ввод и вывод строки неизвестного размера C++
C++ Как обьявить массив неизвестного размера?
Можно ли создать массив размера 10^20? C++
C++ Можно ли создать вектор динамических массивов?

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

Или воспользуйтесь поиском по форуму:
FunDuck
688 / 379 / 4
Регистрация: 22.01.2009
Сообщений: 1,135
08.06.2009, 19:07     Можно ли создать вектор заранее неизвестного размера? #8
memcpy (dest, src, cnt); копирует cnt байтов из src в dest. А atoi преобразовывает символьную строку в целое значение.
Yandex
Объявления
08.06.2009, 19:07     Можно ли создать вектор заранее неизвестного размера?
Ответ Создать тему
Опции темы

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