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

Преобразовать строковое представление цифры в числовое - C++

Восстановить пароль Регистрация
 
maksim
1 / 1 / 2
Регистрация: 30.03.2012
Сообщений: 12
31.03.2012, 11:23     Преобразовать строковое представление цифры в числовое #1
Всем добрый день! Я новичок.

Как переписать нижеследующую программу, чтобы получить доступ к индексу по элементу?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
{
    vector <string> words;
    words.push_back ("zero");
    words.push_back ("one");
    words.push_back ("two");
    int i = 0;
    while (cin >> i) {
    cout << words [i] << endl;
    }
    keep_window_open();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2012, 11:23     Преобразовать строковое представление цифры в числовое
Посмотрите здесь:

Получить символьное представление цифр и пробелов отделяющих группы по три цифры,начиная справа C++
Дано натуральное число. Получить строковое представление этого числа C++
Описать функцию DecToBin(N) строкового типа, возвращающую строковое представление целого неотрицательного числа N C++
преобразовать символьное представление целого числа в целое число без исользования стандартных библ функций C++
Преобразовать строку, чтобы в ее начале были записаны слова, содержащие только цифры C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
31.03.2012, 11:26     Преобразовать строковое представление цифры в числовое #2
Цитата Сообщение от maksim Посмотреть сообщение
доступ к индексу по элементу
std::find пойдет?

Добавлено через 1 минуту
А вообще вопрос некорректный, имхо. Доступ к индексу - это как?
maksim
1 / 1 / 2
Регистрация: 30.03.2012
Сообщений: 12
31.03.2012, 11:32  [ТС]     Преобразовать строковое представление цифры в числовое #3
У Герберта Шилдта в теме вектор есть такая фраза: "... доступ к элементам ... по индексу". Я немного перефразировал ... по своему заданию.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
31.03.2012, 11:36     Преобразовать строковое представление цифры в числовое #4
Цитата Сообщение от maksim Посмотреть сообщение
У Герберта Шилдта в теме вектор есть такая фраза: "... доступ к элементам ... по индексу". Я немного перефразировал ... по своему заданию.
Индекс - это номер элемента в массиве. Что ты хочешь на выходе получить и что на входе задать?
maksim
1 / 1 / 2
Регистрация: 30.03.2012
Сообщений: 12
31.03.2012, 11:51  [ТС]     Преобразовать строковое представление цифры в числовое #5
Цитата Сообщение от Nekto Посмотреть сообщение
Индекс - это номер элемента в массиве. Что ты хочешь на выходе получить и что на входе задать?
Хочу преобразовать строковое представление цифры в числовое. Например, при вводе строки "zero" на экране должна быть выведена цифра 0.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
31.03.2012, 11:56     Преобразовать строковое представление цифры в числовое #6
Цитата Сообщение от maksim Посмотреть сообщение
Хочу преобразовать строковое представление цифры в числовое. Например, при вводе строки "zero" на экране должна быть выведена цифра 0.
C++
1
if (words[i]=="zero") cout<<"0 "
maksim
1 / 1 / 2
Регистрация: 30.03.2012
Сообщений: 12
31.03.2012, 12:04  [ТС]     Преобразовать строковое представление цифры в числовое #7
Цитата Сообщение от Nekto Посмотреть сообщение
C++
1
if (words[i]=="zero") cout<<"0 "
Так придется прописать условие для каждого элемента вектора. А как написать без "if"? А если элементов в векторе будет около ста? В моей программе (выше) можно ввести любой индекс (номер) и по нему будет выведено слово соответствующее введенному числу.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
31.03.2012, 12:04     Преобразовать строковое представление цифры в числовое #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <map>
#include <iostream>
#include <string>
#include <exception>
 
int main()
{
    std::map<std::string, int> m;
    m["one"] = 1;
    try
    {
        std::cout << m.at("one") << std::endl;
    }
    catch(std::exception& e)
    {
        std::cout << e.what() << std::endl;
    }
    return 0;
}
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
31.03.2012, 12:17     Преобразовать строковое представление цифры в числовое #9
Цитата Сообщение от maksim Посмотреть сообщение
Так придется прописать условие для каждого элемента вектора. А как написать без "if"? А если элементов в векторе будет около ста? В моей программе (выше) можно ввести любой индекс (номер) и по нему будет выведено слово соответствующее введенному числу.
В твоей программе надо будет эти 100 элементов сначала вбить в массив. И она делает обратное.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
31.03.2012, 12:21     Преобразовать строковое представление цифры в числовое #10
soon, at в std::map? это нестандартное расширение как я понимаю
maksim
1 / 1 / 2
Регистрация: 30.03.2012
Сообщений: 12
31.03.2012, 12:28  [ТС]     Преобразовать строковое представление цифры в числовое #11
Цитата Сообщение от Nekto Посмотреть сообщение
В твоей программе надо будет эти 100 элементов сначала вбить в массив. И она делает обратное.
Ну это я так оформил, чтобы постоянно не вводить слова, при тестировании программы. Конечно, в естественной ситуации я бы так не написал. Я занимаюсь по книге создателя C++. Он мудреные задания дает в своих упражнениях с целью, чтобы студенты думал и находил оптимальные решения поставленной задачи.

Добавлено через 1 минуту
Цитата Сообщение от alex_x_x Посмотреть сообщение
soon, at в std::map? это нестандартное расширение как я понимаю
Особенно для меня сейчас! Нужно решить задачу используя вектор.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
31.03.2012, 12:31     Преобразовать строковое представление цифры в числовое #12
alex_x_x, да, вы правы, спасибо.

Добавлено через 40 секунд
Цитата Сообщение от maksim Посмотреть сообщение
Особенно для меня сейчас! Нужно решить задачу используя вектор.
std::find, как я уже говорил.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
31.03.2012, 12:34     Преобразовать строковое представление цифры в числовое #13
C++
1
2
3
4
5
6
7
cin>>temp;
for (int i=0;i<n;i++)
 if (words[i]==temp) 
  {
    cout<<i;
    break;
   }
Функциональность такая?
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
31.03.2012, 12:37     Преобразовать строковое представление цифры в числовое #14
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
#include <vector>
#include <string>
#include <algorithm>
#include <iostream>
 
template <typename T> 
int f (const std::vector<T>& v, const T& element)
{
    typename std::vector<T>::const_iterator it;
    if (v.end() == (it = std::find (v.begin(), v.end(), element)))
    {
       return -1;
    }
    return it - v.begin();
}
 
int main()
{
    std::vector <std::string> words;
    words.push_back ("zero");
    words.push_back ("one");
    words.push_back ("two");
    std::cout << f (words, std::string("two"));
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2012, 13:05     Преобразовать строковое представление цифры в числовое
Еще ссылки по теме:

Строковое представление C++
Преобразовать число так, чтобы его цифры представляли собой неубывающую последовательность C++
Получить двоичное строковое представление целого неотрицательного числа C++

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

Или воспользуйтесь поиском по форуму:
maksim
1 / 1 / 2
Регистрация: 30.03.2012
Сообщений: 12
31.03.2012, 13:05  [ТС]     Преобразовать строковое представление цифры в числовое #15
Добавлено через 7 минут
... тестирую ваши новые предложения ...

Добавлено через 14 минут
Цитата Сообщение от Nekto Посмотреть сообщение
C++
1
2
3
4
5
6
7
cin>>temp;
for (int i=0;i<n;i++)
 if (words[i]==temp) 
  {
    cout<<i;
    break;
   }
Функциональность такая?
Все гениальное просто!!! Спасибо! Это была ключевая подсказка!

Законченное решение:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    vector <string> words;
    words.push_back ("zero");
    words.push_back ("one");
    words.push_back ("two");
    int i = 0;
    string temp;
    while (cin >> temp) {
    for (i = 0; i < words.size(); ++i)
        if (words [i] == temp) 
            cout << i << endl;
    }
    keep_window_open();
    return 0;
}
Добавлено через 3 минуты

Добавлено через 2 минуты
Цитата Сообщение от alex_x_x Посмотреть сообщение
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
#include <vector>
#include <string>
#include <algorithm>
#include <iostream>
 
template <typename T> 
int f (const std::vector<T>& v, const T& element)
{
    typename std::vector<T>::const_iterator it;
    if (v.end() == (it = std::find (v.begin(), v.end(), element)))
    {
       return -1;
    }
    return it - v.begin();
}
 
int main()
{
    std::vector <std::string> words;
    words.push_back ("zero");
    words.push_back ("one");
    words.push_back ("two");
    std::cout << f (words, std::string("two"));
    return 0;
}
Вам тоже спасибо огромное! Но ваши подсказки для меня пока сложны для понимания. Я учусь. Надеюсь, что вы будете принимать активное участие в обсуждениях по моим темам, т.к. их будет очень и очень много.
Yandex
Объявления
31.03.2012, 13:05     Преобразовать строковое представление цифры в числовое
Ответ Создать тему
Опции темы

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