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

Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine" - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
28.10.2011, 15:40     Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine" #1
не могу понять как это можно сделать:
"Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine". Введите их в программу, преобразующую цифру в соответствующее строковое представление; например, при вводе цифры 7 на экран должна быть выведена строка seven. С помощью этой же программы, используя тот же са¬мый цикл ввода, преобразуйте строковое представление цифры в числовое; на¬пример, при вводе строки seven на экран должна быть вьшедена цифра 7."
может подскажите
вот я код набрас:
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
#include <iostream>
#include <conio.h>
#include <vector>
#include <string>
using namespace std;
 
int main()
{
   vector <string> text(11);
   text[0]="zero";
   text[1]="one";
   text[2]="two";
   text[3]="three";
   text[4]="four";
   text[5]="five";
   text[6]="six";
   text[7]="seven";
   text[8]="eight";
   text[9]="nine";
   text[10]="ten";
 
 
 
    getch();
    return 0;
}
а дальше не знаю что делать
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2011, 15:40     Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine"
Посмотрите здесь:

C++ по строкам.замените в слове сочетание "му" на "а" , а букву "ы" на "ца". очень нужно
C++ Наследуемым классом для комплексного числа объявить класс "радиус-вектор", имеющий данные "длина" и "угол"
C++ Создать класс комплексных чисел и ввести операции: "+", "-", "*", "/".
Чтения структуры из файла (описать структуру с именем "ORDER": "счет плательщика"; "счет получателя"; "сумма, переводится банковской операцией") C++
C++ С++ консольное приложение win32, матерится на первое "pow" после "if", а на "system" говорит что неопределён.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
garkeP91
49 / 49 / 5
Регистрация: 24.10.2010
Сообщений: 131
28.10.2011, 15:58     Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine" #2
хах, че-то увлекся, может чего лишнего понаписал. Ну в общем так, наверное:
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
#include <iostream>
#include <conio.h>
#include <vector>
#include <string>
using namespace std;
 
int main()
{
   int n=10;
   vector <string> text(n);
   text[0]="zero";
   text[1]="one";
   text[2]="two";
   text[3]="three";
   text[4]="four";
   text[5]="five";
   text[6]="six";
   text[7]="seven";
   text[8]="eight";
   text[9]="nine";
 
   int flag;
   cout<<"Press:"<<endl;
   cout<<"(0)   number -> string"<<endl;
   cout<<"(1)   string -> number"<<endl;
   cin>>flag;
   if(flag==0)
   {
        int i;
        cout<<"Enter number: ";
        cin>>i;
        cout<<text[i]<<endl;
   }
   else if(flag==1)
   {
        string str;
        cout<<"Enter string: ";
        cin>>str;
        for(int k=0; k<n; k++)
            if (text[k] == str)
            {
                cout<<k<<endl;
                break;
            }
   }
   else  cout<<"Select 0 or 1!"<<endl;
 
   getch();
   return 0;
}
спрашивай, если что не понятно
-=ЮрА=-
Заблокирован
Автор FAQ
28.10.2011, 16:00     Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine" #3
Цитата Сообщение от Sylar9 Посмотреть сообщение
может подскажите
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
#include <iostream>
#include <string>
using namespace std;
 
char * sDIGITS[] = {
    "zero",
    "one",
    "two",
    "three",
    "four",
    "five",
    "six",
    "seven",
    "eight",
    "nine"
};
 
char * num2str(int num);
int str2num(char * str);
 
int main()
{
    int val;char str[6];
    cout<<"Enter digit [0;9] : ";cin>>val;
    cout<<"String equivalent : "<<num2str(val)<<"\n";
    cout<<"Enter text value  : ";cin>>str;
    cout<<"Value : "<<str2num(str)<<"\n";
    system("pause");
    return 0;
}
 
char * num2str(int num)
{
    return sDIGITS[num];
}
 
int str2num(char * str)
{
    int ret = -1;
    for(int i = 0; i < 10; i++)
    {
        if(strcmp(sDIGITS[i],str) == 0)
        {
            ret = i;
            break;
        }
    }
    return ret;
}
Миниатюры
Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine"  
Zverit
Уничтожитель печенек
 Аватар для Zverit
277 / 205 / 21
Регистрация: 07.02.2010
Сообщений: 723
28.10.2011, 16:04     Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine" #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
   string getnum;
   string text[11] ={"zero","one", "two","three","four", 
                    "five", "six", "seven","eight","nine","ten"};  
    cin>>getnum;
 
   for (int i = 0 ; i  <= 10; i++)
       if (text[i].compare( getnum ) == 0)
           cout<<i; 
    system("PAUSE>>null");
    return 0;
}
dr.hell
0 / 0 / 0
Регистрация: 18.05.2010
Сообщений: 3
14.05.2012, 17:09     Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine" #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
#include <std_lib_facilities.h>
using namespace std;
int main(){
    int num,i;
    vector<string> numbers(10);
    numbers[0] = "null";
    numbers[1] = "one";
    numbers[2] = "two";
    numbers[3] = "three";
    numbers[4] = "four";
    numbers[5] = "five";
    numbers[6] = "six";
    numbers[7] = "seven";
    numbers[8] = "eight";
    numbers[9] = "nine";
 
    cout << "Enter num: \n";
    while (cin >> num)
    {
    for (i=0; i<numbers.size(); i++)
    
        if (num == i) cout << numbers[i] <<"\n";
    }
    keep_window_open();
    return 0;
}
и

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
#include <std_lib_facilities.h>
using namespace std;
int main(){
    int i;
    string num;
    vector<string> numbers(10);
    numbers[0] = "null";
    numbers[1] = "one";
    numbers[2] = "two";
    numbers[3] = "three";
    numbers[4] = "four";
    numbers[5] = "five";
    numbers[6] = "six";
    numbers[7] = "seven";
    numbers[8] = "eight";
    numbers[9] = "nine";
 
    cout << "Enter num: \n";
    while (cin >> num)
    {
    for (i=0; i<numbers.size(); i++)
    
        if (num == numbers[i]) cout << i <<"\n";
    }
    keep_window_open();
    return 0;
}
oleg@tor1
 Аватар для oleg@tor1
32 / 17 / 2
Регистрация: 05.09.2011
Сообщений: 152
09.11.2012, 00:26     Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine" #6
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
59
60
61
62
63
64
65
66
67
68
69
70
71
#include "std_lib_facilities.h"
using namespace std;
 
string v=" ";
int x=0;
char tip;
vector <string> value (10); // Вектор.
 
value[0] = "zero";
value[1] = "one";
value[2] = "two";
value[3] = "three";
value[4] = "four";
value[5] = "five";
value[6] = "six";
value[7] = "seven";
value[8] = "eight";
value[9] = "nine";
 
 
 
setlocale(LC_ALL,"russian"); // Подключает Кириллицу.
 
cout << "Выберите тип трансформации цифр:"<< endl;
    cout << "'Цифра - текст' нажмите 0" << endl;
        cout << "'Текст - цифра' нажмите 1" << endl;
 
cin >> tip;
 
    if (tip == '0')//'Цифра - текст'
        {
            unsigned int i=0;
                cout << "Введите цифру:" << endl;               
                    while (i<=value.size())
                    {   
                        ++i;
                        cin >> x;               
                        cout << value[x] << endl;
                    }//end_while            
        }//end_if
 
    else if (tip == '1')
    {
        unsigned int t=0;
            string text;
                cout << "Введите текст:" << endl;
 
        while (t<=value.size())
        {
        ++t;
        cin >> text;
 
        for (unsigned int z = 0; z<=value.size();++z)
            {   
                if (value[z] == text)
                {
                cout << z << endl;
                break;
                }//end_if
                
            }//end_for  
        }//end_while
    }//end_else
    else
    {
        cout << "Вы не выбрали тип трансформации. 0 или 1:" << endl;    
    }//end_else
 
keep_window_open();
return 0;
} // end_main()
Lar4ik
43 / 41 / 20
Регистрация: 27.02.2013
Сообщений: 256
07.02.2014, 16:27     Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine" #7
Решаю эту же задачу (первую часть), но после ввода цифры (строка 10) происходит выход из программы. Подскажите, что не так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
    vector<string>words;
    string number;
    while(cin>>number)
        words.push_back(number);
    
   int x;
    cout<<"Enter integer number:"<<endl;
    while(cin>>x)
    {
        for (int i=0;i<words.size();++i)
            if(x==i) 
                cout<<words[i];
    }
    getch();
    return 0;
}
oleg@tor1
 Аватар для oleg@tor1
32 / 17 / 2
Регистрация: 05.09.2011
Сообщений: 152
07.02.2014, 16:35     Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine" #8
У тебя if задает единственное совпадение, т.е. х ты ввел с клавиатуры, а цикл двигается каждый ввод. Тебе надо прописать условие else. Например, continue
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
07.02.2014, 16:38     Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine" #9
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
#include <algorithm>
#include <iterator>
#include <iostream>
#include <string>
#include <array>
 
int main()
{
    const size_t arraySize = 10;
    
    std::array <std::string, arraySize> stringArray = { "zero", "one", "two", "three", "four",
                                                        "five", "six", "seven", "eigth", "nine" };
 
    size_t userNumber;
    std::cout << "Number: ";
    std::cin >> userNumber;
    std::cout << "Result: " << stringArray.at(userNumber) << std::endl;
 
    std::string userString;
    std::cout << "String number: ";
    std::cin >> userString;
    std::cout << "Result: " << std::distance(stringArray.begin(), std::find(stringArray.begin(), stringArray.end(), userString)) << std::endl;
 
    std::system("pause");
    return 0;
}
Lar4ik
43 / 41 / 20
Регистрация: 27.02.2013
Сообщений: 256
07.02.2014, 18:58     Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine" #10
oleg@tor1, не помогло
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2014, 21:15     Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine" #11
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Lar4ik Посмотреть сообщение
while(cin>>x)
* * {
* * * * for (int i=0;i<words.size();++i)
* * * * * * if(x==i)
* * * * * * * * cout<<words[i];
* * }
- написана несусветная глупость(бесконечный ввод)!Далее почему никто их начинающих не хочет понять что после ввода
Цитата Сообщение от Lar4ik Посмотреть сообщение
cin>>number
остаётся \n который в последующем вводе просто его искоробит?
Цитата Сообщение от Lar4ik Посмотреть сообщение
while(cin>>x)
. Подумай что будет с вводом если для int x прийдёт чаровский \n из буфера?
Фиксится следующим образом
Цитата Сообщение от Lar4ik Посмотреть сообщение
int x;cin.get();
* * cout<<"Enter integer number:"<<endl;
Вот фикс проекта на том уровне на котором он написан
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 <string>
#include <vector>
#include <iostream>
using namespace std;
 
int main()
{
    vector<string>words;
    string number;
    while(cin>>number)
    {
        if( number == "stop" )
            break;
        else
        words.push_back(number);
    }
    
   int x;cin.get();
    cout<<"Enter integer number:"<<endl;
    while(cin>>x)
    {
        for (int i=0;i<words.size();++i)
            if(x==i) 
                cout<<words[i];
    }
    system("pause");
    return 0;
}
Миниатюры
Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine"  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2015, 21:46     Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine"
Еще ссылки по теме:

C++ В массиве структур студент с полями "ИМЯ" "ВОЗРАСТ" "УСПЕВАЕМОСТЬ" выполнить сортировку по успеваемости по возрастанию
C++ Вставить пробел после каждого символа "." "," "!" или "?", если за этими символами не следует пробел
Структура «Преподаватель» с полями "ФИО", "стаж", "категория", "нагрузка" C++

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

Или воспользуйтесь поиском по форуму:
LineStown
 Аватар для LineStown
63 / 63 / 3
Регистрация: 04.08.2010
Сообщений: 399
26.07.2015, 21:46     Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine" #12
рискну предложить такой вариант)

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
#include "std_lib_facilities.h"
 
int main()
{
    vector<string> numbers(10);
    numbers[0] = "null";
    numbers[1] = "one";
    numbers[2] = "two";
    numbers[3] = "three";
    numbers[4] = "four";
    numbers[5] = "five";
    numbers[6] = "six";
    numbers[7] = "seven";
    numbers[8] = "eight";
    numbers[9] = "nine";
 
    string data;
    cout << "Input String or Int : ";
    cin >> data;
    if (data.length() == 1)cout << data << " = " << numbers[stoi(data)] << endl;
    else
        for (auto i = 0; i < 10; i++)
            if (numbers[i] == data)
            {
                cout << data << " = " << i << endl;
                break;
            }
    return 0;
}
Yandex
Объявления
26.07.2015, 21:46     Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine"
Ответ Создать тему
Опции темы

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