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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.73
Jaksn
3 / 3 / 0
Регистрация: 26.03.2011
Сообщений: 114
#1

Преобразование цифр в слова - C++

09.05.2011, 16:54. Просмотров 4160. Ответов 12
Метки нет (Все метки)

У меня есть такая задачка. Есть текстовый файл с таким текстом: "Мой телефон -123 - 45 - 67". И необходимо заменить цифры на слова. Я не пойму, каким образом это можно реализовать. Помогите пожалуйста!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mansp
18 / 18 / 0
Регистрация: 07.11.2010
Сообщений: 136
09.05.2011, 18:33     Преобразование цифр в слова #2
типа вместо 123 -45 -67 нписать одни два три - четрые пять- шесть семь?
Jaksn
3 / 3 / 0
Регистрация: 26.03.2011
Сообщений: 114
09.05.2011, 21:12  [ТС]     Преобразование цифр в слова #3
Да, именно так
asics
Freelance
Эксперт C++
2842 / 1779 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
09.05.2011, 21:15     Преобразование цифр в слова #4
Вывести число прописью
ol4ik
22 / 21 / 6
Регистрация: 08.04.2010
Сообщений: 90
09.05.2011, 21:22     Преобразование цифр в слова #5
Если прога должна вместо 123 писать просто один два три,а не сто двадцать три,то,наверное,можно сделать с помощью оператора switch
Jaksn
3 / 3 / 0
Регистрация: 26.03.2011
Сообщений: 114
10.05.2011, 18:28  [ТС]     Преобразование цифр в слова #6
Что-то я не пойму, каким образом switch может тут помочь.
ol4ik
22 / 21 / 6
Регистрация: 08.04.2010
Сообщений: 90
13.05.2011, 21:11     Преобразование цифр в слова #7
читаете в цикле файл и если в файле встречаете код цифры,то с помощью switch выбираете,что за цифра.например,если 1,то будет выводите на экран слово "один".
что-то вроде этого.
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
13.05.2011, 21:16     Преобразование цифр в слова #8
Ну наверно через switch по-детски. Легче создать массив слов:
string words[]={"ноль", "один", "два", ...} и по распарсенному индексу обращаться.
ol4ik
22 / 21 / 6
Регистрация: 08.04.2010
Сообщений: 90
13.05.2011, 21:22     Преобразование цифр в слова #9
gooseim,если есть такой оператор,то почему бы им не воспользоваться?
для начинающих в С++ нормально
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
13.05.2011, 21:24     Преобразование цифр в слова #10
ol4ik, оператор то не плох, но в данном случае это будет выглядеть громоздко.
Мой вариант:
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 <iostream>
 
using std::string;
 
string setw(const string& str)
{
   static string w[]={"ноль", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять"};
   string out;
   for(size_t i=0;i<str.length();i++)
   {
      if(str[i]>='0' && str[i]<='9')
      {
         out+='(';
         out+=w[(size_t)(str[i]-'0')];
         out+=')';
      }
      else
         out+=str[i];
   }
   return out;
}
 
int main()
{
   string s="my number is 100-34-56";
   std::cout<<setw(s)<<std::endl;
}
Естественно, надо локаль выставить или перекодировку, если не поддерживает.
Jaksn
3 / 3 / 0
Регистрация: 26.03.2011
Сообщений: 114
14.05.2011, 17:08  [ТС]     Преобразование цифр в слова #11
Спасибо за вариант, но мне нужно, чтобы чтение текста было из файла и измененный текст тоже должен туда вноситься.
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
14.05.2011, 17:20     Преобразование цифр в слова #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
30
31
32
33
34
#include <string>
#include <iostream>
#include <fstream>
 
using std::string;
 
string ntow(const string& str)
{
   static string w[]={"ноль", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять"};
   string out;
   for(size_t i=0;i<str.length();i++)
   {
      if(str[i]>='0' && str[i]<='9')
      {
         out+='(';
         out+=w[(size_t)(str[i]-'0')];
         out+=')';
      }
      else
         out+=str[i];
   }
   return out;
}
 
int main()
{
   string s;
   ifstream in("1.txt");
   getline(in, s, '\0');
   in.close();
   ofstream out("1.txt");
   out<<ntow(s);
   out.close();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2011, 18:58     Преобразование цифр в слова
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Jaksn
3 / 3 / 0
Регистрация: 26.03.2011
Сообщений: 114
14.05.2011, 18:58  [ТС]     Преобразование цифр в слова #13
Спасибо большое!
Yandex
Объявления
14.05.2011, 18:58     Преобразование цифр в слова
Ответ Создать тему
Опции темы

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