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

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

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

Модуль для перевода числовых записей в строковые - C++

17.11.2013, 18:32. Просмотров 302. Ответов 1
Метки нет (Все метки)

Модуль для перевода числовых записей ("1213") в строковые ("тысяча двести тринадцать") и обратно. Предусмотреть числа максимально возможного диапазона значений и форм записи.
Часть программы у меня есть,дальше не могу справиться.
Эта программа переводит числа до 1000(не включая)
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 <string.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
 
const char
 *str0[10]=
 {"","один ","два ","три ","четыре ",
 "пять ","шесть ","семь ","восемь ","девять "},
 *str10[10]=
 {"десять ","одиннадцать ","двенадцать ","тринадцать ","четырнадцать ","пятнадцать ",
 "шестнадцать ","семнадцать ","восемнадцать ","девятнадцать "},
 *str1[10]=
 {"","","двадцать ","тридцать ","сорок ",
 "пятьдесят ","шестьдесят ","семьдесят ","восемьдесят ","девяносто "},
 *str2[10]=
 {"","сто ","двести ","триста ","четыреста ",
 "пятьсот ","шестьсот ","семьсот ","восемьсот ","девятьсот "},
 *thous[10]={"","одна","две","три","четыре","пять","шесть","семь","восемь","девять"},
 *thouschar[5]={"","тысяч","миллион","миллиард","триллион"}
;
// главная программа:
int main()
{
 unsigned d[3],n,
 t,k,i;
 char sum[80];
 clrscr();
 cout<< "введите натуральное число n "; cin>> n;
 t=n; k=0;
 for(i=0;i<3;i++) d[i]=0;
 while (t>=10) {
   d[k++]=t%10; t=t/10;
 }
 d[k++]=t%10;
 unsigned d0 = d [0],d1 = d [1],d2 = d [2];
 strcpy(sum,"");
 strcat(sum,str2[d2]);
 if(d1==1) strcat(sum,str10[d0]);
 else{strcat(sum,str1[d1]);strcat(sum,str0[d0]);}
  if (n==0) strcpy(sum,"ноль");
 else sum[strlen(sum)-1]=0;
 //вывод:
 printf("\n%d число прописью:\n%s.\n",n,sum);
 return 0;
 getch();
}
может кто-нибудь помочь сделать все это в диапазоне до миллионов,и чтобы было все с окончаниями,и т.д
так-то я пыталась,но программа не работает.мой мозг не способен наверное на такое..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2013, 18:32     Модуль для перевода числовых записей в строковые
Посмотрите здесь:

Программа для перевода текста - C++
Хочу попробовать создать программу, которая переводит например вот эту фигню &quot;ghbdtn&quot; в слово &quot;Привет&quot;. Пытался что то там сделать, ничего...

Программа для перевода чисел - C++
Вывести на экран таблицу значений десятичных цифр в двоичной системе счисления.

Программа для перевода числа - C++
Не могу написать программу для перевода числа, введенного пользователем из P -ичной системы счисления в Q -ичную и обратно. Предусмотреть...

Программа для перевода валют - C++
Помогите пожалуйста,с++ не проходили,а уже скоро зачетная неделя будет,и там есть с++ и вот эти 2 задачи. 1)Напишите программу, которая...

Программа для перевода римских цифр С++ - C++
Написать программу для перевода римских цифр в арабские. тесты и результаты 1) CMXLVIII - 948 2) MCCLXIX -1269

Программа для перевода чисел из 16 системы в 2 на C++ - C++
Нужно написать программу, в которой пользователь вводит число, и оно переводится из 16 в 2. Написать желательно самым понятным и простым...

Программа для автоматизации перевода слов - C++
Структура «словарь» должна содержать 2 поля: слово на русском языке и его перевод на язык L (это может быть молодежный или профессиональный...

Программа для перевода чисел из 10 системы в 2 - C++
Народ помогите написать программу для перевода чисел из 10 системы в двоичную В консоле Если надо я могу прислать листинг программы...

Составить программу для перевода арабских чисел в римские и для зворотньох операции. Например 255 = ССЛВ = СТО + СТО + Пятьдесят + Пять - C++
Составить программу для перевода арабских чисел в римские и для зворотньох операции. Например 255 = ССЛВ = СТО + СТО + Пятьдесят + Пять ...

Программа для перевода текста с русского на английский - C++
Здравствуйте! У меня проблема,Я не могу написать программу для перевода текста с русского на англиский.Кто может мне помочь?


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
noomer
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 7
29.11.2013, 18:51  [ТС]     Модуль для перевода числовых записей в строковые #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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
 
const char
 *str0[10]=
 {"","один ","два ","три ","четыре ",
 "пять ","шесть ","семь ","восемь ","девять "},
 *str10[10]=
 {"десять ","одиннадцать ","двенадцать ","тринадцать ","четырнадцать ","пятнадцать ",
 "шестнадцать ","семнадцать ","восемнадцать ","девятнадцать "},
 *str1[10]=
 {"","","двадцать ","тридцать ","сорок ",
 "пятьдесят ","шестьдесят ","семьдесят ","восемьдесят ","девяносто "},
 *str2[10]=
 {"","сто ","двести ","триста ","четыреста ",
 "пятьсот ","шестьсот ","семьсот ","восемьсот ","девятьсот "},
 *thous[10]={"","одна ","две ","три ","четыре ","пять ","шесть ","семь ",
 "восемь ","девять "},
 *thouschar[2][3] = {{"миллион ", "миллиона ", "миллионов " },
            {"тысяча ",  "тысячи ",   "тысяч " }}
;
// главная программа:
int main()
{
int d[9],k,i,t;
unsigned int n;
 char sum[300];
 clrscr();
 cout<< "введите натуральное число n "; cin>> n;
 t=n; k=0;
 for(i=0;i<9;i++) d[i]=0;
 while (t>=10) {
   d[k++]=t%10; t=t/10;
 }
 d[k++]=t%10;
 unsigned d0=d[0],d1=d[1],d2=d[2],d3=d[3],d4=d[4],d5=d[5],d6=d[6],
      d7=d[7],d8=d[8];
 strcpy(sum,"");
 strcat(sum,str2[d8]);
 if(d7==1) strcat(sum,str10[d6]);
 else
{ strcat(sum,str1[d7]);
  strcat(sum,str2[d6]);
}
 if(d7>10 && d7<20 || d6>4) strcat(sum,thouschar[1][3]);
 if(d6==1) strcat(sum,thouschar[1][1]);
 else strcat(sum,thouschar[1][2]);
 
 
 
 strcat(sum,str2[d5]);
 if (d4==1) strcat(sum,str10[d3]);
 else{
 strcat(sum,str1[d4]);
 strcat(sum,thous[d3]);
 }
 
 if (d4>10 && d4<20 || d3>4) strcat(sum,thouschar[2][3]);
 if (d3==1) strcat(sum,thouschar[2][1]);
 else strcat(sum,thouschar[2][2]);
 
 strcat(sum,str2[d2]);
 if(d1==1) strcat(sum,str10[d0]);
 else{strcat(sum,str1[d1]);strcat(sum,str0[d0]);}
  if (n==0) strcpy(sum,"ноль");
 else sum[strlen(sum)-1]=0;
 //вывод:
 printf("\n%d число прописью:\n%s.\n",n,sum);
 return 0;
 }
Так,здесь не получается с миллионами,там если ввожу тип n как unsigned long, то он вообще выводит null.
И чего-то с тысячами напортачила,если например введу 21 900, он мне напишет тысяч двадцать одна девятьсот.
Может ктоо нибудь помоооожет?
Просто я перерыла уже весь интернет,а разобраться не могу
Yandex
Объявления
29.11.2013, 18:51     Модуль для перевода числовых записей в строковые
Ответ Создать тему
Опции темы

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