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

Вывести число прописью - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Подскажите хороший справочник по синтаксису http://www.cyberforum.ru/cpp-beginners/thread83643.html
Подскажите хороший справочник по синтаксису "С", ато во всём, что скачиваю чаще-всего одна "философия" программирования, вместо чётких указаний и формул:rtfm:
C++ Голодная коза на веревке. Есть квадратное поле с травой, сторона квадрата - N. В центре поля привязана веревка длины r. К другому концу веревки привязана коза. Коза поедает всю траву, до которой может дотянуться, при этом ей мешает длина веревки. Ввод: В первой строке файла input содержатся два целых числа N и r через пробел. 1<=N,r<=100 Ограничения: время счета - 1 сек, объем памяти: 16 Mb Вывод: С точностью до... http://www.cyberforum.ru/cpp-beginners/thread83603.html
C++ C# как редактировать word документ?
Привет, есть рутинная работа на MS Word. В сделанной таблице нужно заменять цифры на последовательные для дальнейшей печати например 1111 1112 1113 в следующий раз 1111 заменить на 1114 и тд (естественно эти цифры в ячейках, в каждой ячейке логотип и тд.) Подкажите пожалуйста способ, каким образом сделать, чтобы программа автоматом заменяла, и работала именно в ворде? с макросами не...
C++ atof и atoi
Помогите пожалуйста, разобратся что такое atof, atoi, как работает, что делает?
C++ Связные списки http://www.cyberforum.ru/cpp-beginners/thread83574.html
Написать функцию, удаляющую из исходной строки заданный символ. Например, удаление символа ‘i’ из строки “cabin heating” дает в результате “cabn heatng” Есть код написанный с реализцией классов ,нужно изменить под связные списки. #include <iostream> #include <conio.h> using namespace std; class eraseSymbol {
C++ C++, Помочь разобраться в готовом коде Здравствуйте, я заказала по интернету код программы для решения следующей задачи: В задании курсового проекта необходимо создать программу, которая содержит текущую информацию о книгах в библиотеке. Сведения включают: • Номер УДК • Фамилию и инициалы автора • Название книги • Год издания • Количество экземпляров Программа должна обеспечивать: • Начальное формирование данных обо всех... подробнее

Показать сообщение отдельно
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
14.01.2010, 21:26     Вывести число прописью
Что-то в таком роде (вариант с дробями)
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 static char *sot[]={"сто","двести","триста","четыреста",
             "пят","шест", "сем","восем","девят" };
 static char *desiat[]={" двадцать"," тридцать"," сорок"," пят"," шест",
                " сем"," восем"," девяносто" };
 static char *edm[]={""," один"," два"," три"," четыре"," пять"," шесть",
             " семь"," восемь",
             " девять"," десять"," один"," две"," три",
             " четыр"," пят"," шест"," сем"," восем"," девят" };
 static char *edw[]={" одна"," две" };
 static char *nmtr[]={" тысяч"," миллион"," миллиард", " триллион",
               " квадриллион", " квинтиллион", " сектиллион", " септаллион", NULL };
         // дальше не знаю, м.б. товарищи подскажут ...
 static char *nokm[]={ "а" , "ов" };
 static char *nokt[]={ "а", "и", "" };
/* ------------------ */
Propis3(unsigned long L, int n, char *s, int rg) // Число прописью
{ int R, ns, nd, r; char *p; unsigned long M;
 
   if (n==0 && L==0) {
     strcat(s, " ноль ");
     return;
   }
   M = L / 1000;
   R = L % 1000;
   if (M != 0) Propis3(M, n+1, s, 0);  // Рекурсия!
   if (R==0) return;
   ns = R / 100;
   if (ns)    sprintf(s+strlen(s), " %s", sot[ns-1]);
   if (ns>=5) strcat(s, "ьсот");
   R = R % 100;  // < 100
   nd = R / 10;  // Десятки
   if (nd >= 2) {
      strcat(s, desiat[nd-2]);
      if (nd>=5 && nd<=8) strcat(s, "ьдесят");
      R = R % 10;
   }
   r = sklon(R);
   if (n==1 && R>0 && R<3) p = edw[R-1];
   else                    p = edm[R];
   if (rg==1 && n==0) {
     if      (R==1) p = " одна";
     else if (R==2) p = " две";
   }
   if (rg==2 && n==0 && R==1) p = " одна";
   strcat(s, p);
   if (R > 10) strcat(s, "надцать");
   if (n > 0) {
     strcat(s, nmtr[n-1]);
     if     (n==1) strcat(s, nokt[r]);
     else if (r>0) strcat(s, nokm[r-1]);
   }
}
/*********************/
sklon(int dd)    /* Определение склонения числа */
{ int n, r;
 
    r = 2;
    n = dd % 100;
    if (n>4 && n<20) return(r);
    n = n % 10;
    if      (n==1)       r = 0;
    else if (n>1 && n<5) r = 1;
    return(r);
}
/* ------------------ */
static char *drob[] = {
   " десят", " сот", " тысячн", " деятитысячн", " стотысячн",
   " миллионн", " десятимиллионн", " стомиллионн", " миллиардн",
   " десятимиллиардн", " стомиллиардн", " триллионн"  };
/* ------------------ */
main()
{ char b[200], s[1000], *d, *p; unsigned long L; int nn, k, rg;
 
a: printf(">");
   gets(b);
   if (strlen(b)==0) return;
   d = strchr(b, '.');
   if (d==NULL) rg = 0;
   else         rg = 2;
   s[0] = '\0';
   L = atol(b);
   Propis3(L, 0, s, rg);
   if (d!=NULL) {
     k = L % 10;
     if (k!=1) p = "целых";
     else      p = "целая";
     sprintf(s+strlen(s), " %s и ", p);
     L = atol(d+1);
     nn = 0;  // Кол-во дробных знаков
     for (nn=0, d=d+1; *d!='\0' && *d>='0' && *d<='9'; d++, nn++) ;
     if (nn==0) nn = 1;
     Propis3(L, 0, s+strlen(s), 1);
     strcat(s, drob[nn-1]);
     k = L % 10;
     if (k!=1) strcat(s, "ых");
     else      strcat(s, "ая");
   }
   printf("%s\n", s);
   goto a;
}
Если надо считать более длинные числа, давайте придумаем их представление.
У меня есть одно на примете, могу выложить.
 
Текущее время: 11:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru