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

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

Войти
Регистрация
Восстановить пароль
 
Looney
0 / 0 / 0
Регистрация: 13.03.2015
Сообщений: 16
#1

Заменить цифры, написанные буквами - C++

02.07.2015, 16:34. Просмотров 459. Ответов 3
Метки нет (Все метки)

Требуется написать консольное приложение, в котором пользователь должен вводить текст, а выводиться должен тот же текст, но с цифрами, записанными буквами, на цифры.(ограничиться двузначными числами).

Долго пытался что-то сделать. Дошел до 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
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
void main(){
    cout << "Enter the tex on english:";
    string str;
    getline(cin, str);
    str.replace(str.find("one"), 3, "1");
    str.replace(str.find("two"), 3, "2");
    str.replace(str.find("three"), 5, "3");
    str.replace(str.find("four"), 4, "4");
    str.replace(str.find("five"), 4, "5");
    str.replace(str.find("six"), 3, "6");
    str.replace(str.find("seven"), 5, "7");
    str.replace(str.find("eight"), 5, "8");
    str.replace(str.find("nine"), 4, "9");
    str.replace(str.find("ten"), 3, "10");
    str.replace(str.find("eleven"), 6, "11");
    str.replace(str.find("twelve"), 6, "12");
    str.replace(str.find("thirteen"), 8, "13");
    str.replace(str.find("fourteen"), 8, "14");
    str.replace(str.find("fifteen"), 7, "15");
    str.replace(str.find("sixteen"), 7, "16");
    str.replace(str.find("seventeen"), 9, "17");
    str.replace(str.find("eighteen"), 8, "18");
    str.replace(str.find("nineteen"), 8, "19");
    str.replace(str.find("twenty"), 6, "20");
    str.replace(str.find("thirty"), 6, "30");
    str.replace(str.find("fourty"), 6, "40");
    str.replace(str.find("fifty"), 5, "50");
    str.replace(str.find("sixty"), 5, "60");
    str.replace(str.find("seventy"), 7, "70");
    str.replace(str.find("eighty"), 6, "80");
    str.replace(str.find("ninety"), 6, "90");
    cout << str;
    system("pause");
}
Но тут дальше 1 не проходит. Видимо функция модифицирует строку из-за чего повторное использование невозможно. =(

Второй способ:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h"
#include <iostream>
#include <string>
 
 
using namespace std;
void main(){
    cout << "Enter the tex on english:";
    char str[100];
    gets(str);
    char * pch = strtok(str, " ");
    while (pch != NULL)
    {
        if (pch == "one"){
            cout << " 1";
        }
        else cout << pch<< " ";
        pch = strtok(NULL, " ");
    }
    system("pause");
}
Не очень разбираюсь в указателях, ну и тут не смог довести до ума.

Буду очень благодарен, если кто-нибудь поможет реализовать данное приложение =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2015, 16:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заменить цифры, написанные буквами (C++):

Строки: заменить в словах цифры малыми буквами латинского алфавита - C++
Напишите, пожалуйста, программу! Из текстового файла, состоящего из 6-7 строк сформировать массив слов. Заменить в словах цифры малыми...

Заменить слова обозначающие цифры на цифры (от 1 до 9) - C++
Дорогие друзья, помогите! Нужно написать программу, заменяющую, в выбранном мной текстовом файле, слова, обозначающие цифры, на сами цифры...

Переводить числа, написанные словами, в числа, написанные цифрами - C++
using System; using System.Collections.Generic; using System.Text; namespace StringExample { class Program { static void...

Строки. Заменить символы - цифры на символ '*'. В заданной строке заменить подряд идущие пробелы - C++
П.5.16.Правил Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема. ...

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

В тексте заменить все символы, не являющиеся буквами, знаком нижнее подчеркивание - C++
Предусмотрите ввод с клавиатуры произвольной строки символов. На экран вывести введенную строку и результат ее обработки. В тексте заменить...

3
Рыжий Лис
Просто Лис
346 / 271 / 80
Регистрация: 17.05.2012
Сообщений: 1,116
Записей в блоге: 4
02.07.2015, 17:21 #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
#include <iostream>
#include <string>
using namespace std;
 
void func(string &str, string str2, string str3){
  int pos = str.find(str2);
  while (pos!=-1) {
    str.replace(pos, str2.length(), str3);
    pos = str.find(str2);
  }
}
 
int main(){
    cout << "Enter the tex on english: ";
    string str;
    getline(cin, str);
    func(str,"one","1");
    /*
    str.replace(str.find("two"), 3, "2");
    str.replace(str.find("three"), 5, "3");
    str.replace(str.find("four"), 4, "4");
    str.replace(str.find("five"), 4, "5");
    str.replace(str.find("six"), 3, "6");
    str.replace(str.find("seven"), 5, "7");
    str.replace(str.find("eight"), 5, "8");
    str.replace(str.find("nine"), 4, "9");
    str.replace(str.find("ten"), 3, "10");
    str.replace(str.find("eleven"), 6, "11");
    str.replace(str.find("twelve"), 6, "12");
    str.replace(str.find("thirteen"), 8, "13");
    str.replace(str.find("fourteen"), 8, "14");
    str.replace(str.find("fifteen"), 7, "15");
    str.replace(str.find("sixteen"), 7, "16");
    str.replace(str.find("seventeen"), 9, "17");
    str.replace(str.find("eighteen"), 8, "18");
    str.replace(str.find("nineteen"), 8, "19");
    str.replace(str.find("twenty"), 6, "20");
    str.replace(str.find("thirty"), 6, "30");
    str.replace(str.find("fourty"), 6, "40");
    str.replace(str.find("fifty"), 5, "50");
    str.replace(str.find("sixty"), 5, "60");
    str.replace(str.find("seventy"), 7, "70");
    str.replace(str.find("eighty"), 6, "80");
    str.replace(str.find("ninety"), 6, "90");
    */
    cout << str;
}
1
Looney
0 / 0 / 0
Регистрация: 13.03.2015
Сообщений: 16
02.07.2015, 17:39  [ТС] #3
Благодарю =)
0
Мкртчян Тигран
0 / 0 / 0
Регистрация: 18.05.2015
Сообщений: 1
02.07.2015, 17:55 #4
Хелпаните кто-нибудь, пожалуйста. В программе есть ввод фамилий, а потом ввод текста с этими фамилиями. А вывести надо откорректированый текст, где все фамилии и первые слова в предложении будут с заглавной буквы. Для первых слов в предложении я вроде разобрался, а с фамилиями не могу понять, как сделать. Есть вариант разбить строку с фамилиями strtok-ом, а потом сравнивать их в цикле с главным текстом. И если будут совпадения - делать с большой буквы. Только не понимаю, как обращаться к массиву слов. Помогите, пожалуйста.
0
02.07.2015, 17:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2015, 17:55
Привет! Вот еще темы с ответами:

Удалить все символы в строке, не являющиеся буквами и заменить множественные пробелы одним - C++
Ребята,буду запредельно благодарен.

Сформировать из значений массива другой массив, расположив в нем сначала цифры, затем – буквы, затем - символы, не являющихся ни буквами, ни цифрами - C++
Создать массив из 20 символьных значений. Сформировать из его значений другой массив, расположив в нем сначала цифры, затем – буквы, затем...

Решить пример, в котором цифры заменены буквами: "enter + enter = абзац" - C++
ENTER + ENTER = АБЗАЦ В этом примере на сложение каждая из цифр от нуля до девяти заменена соответствующей буквой. Попробуйте найти...

Заменить цифры от 0 до 9 словами - C++
Нужно написать две проги: 1.Написать программу, которая вводит текст, состоящий из нескольких предложений, и выводит его на экран,...


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

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

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