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

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

Войти
Регистрация
Восстановить пароль
 
maksim
1 / 1 / 2
Регистрация: 30.03.2012
Сообщений: 12
#1

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

31.03.2012, 11:23. Просмотров 948. Ответов 14
Метки нет (Все метки)

Всем добрый день! Я новичок.

Как переписать нижеследующую программу, чтобы получить доступ к индексу по элементу?
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++
Напишите функцию itoa(int a, char *s), которая сохдает строковое представление a и возвращает его в s. Целое число должно передоваться в...

Получить двоичное строковое представление целого неотрицательного числа - C++
Помогите пожалуйста с программой, очень надо. Описать функцию DecToBin(N) строкового типа, возвращающую строковое представление...

Описать функцию, возвращающую строковое представление целого неотрицательного числа - C++
Описать функцию DecToHex(N) строкового типа, возвращающую строковое представление целого неотрицательного числа N в 16-ричной системе...

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

Описать функцию DecToBin(N) строкового типа, возвращающую строковое представление целого неотрицательного числа N - C++
Описать функцию DecToBin(N) строкового типа, возвращающую строковое представление целого неотрицательного числа N в двоичной системе...

Представить числом введенное текстовое представление цифры - C++
Обьясните, что в этом коде делает цикл (for) ? Почему если его убрать, программа не работает? &quot;Создайте вектор, хранящий десять...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2540 / 1305 / 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
2540 / 1305 / 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
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
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
2540 / 1305 / 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
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
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++
Всем доброго вечера! Народ, кто-нибудь знает как пробразовать символьное представление числа &quot;123&quot; в 123 БЕЗ ИСПОЛЬЗОВАНИЯ стандартных...

Получить символьное представление цифр и пробелов отделяющих группы по три цифры,начиная справа - C++
Практикуюсь в С++ Написал код. bool **Madj; int *Visit; int main(){ int NodeCount=3; Visit = new int ; Madj = new...

Из введенной строки удалить цифры и преобразовать буквы в другой регистр - C++
Вот условия задачи и мое решение, но оно не работает, что не так? подскажите, пожалуйста! /* 1. Напишите программу, которая читает...

Преобразовать строку, чтобы в ее начале были записаны слова, содержащие только цифры - 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     Преобразовать строковое представление цифры в числовое
Ответ Создать тему
Опции темы

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