Ответ:
Примерно так, только нужно еще со склонением рублей и копеек поиграться.
#include <iostream>
#include <string>
#include <cmath>
#include <stdio.h>
using namespace std;
const
string edin[] = { "одна", "две", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять" };
string teen[] = { "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать" };
string des[] = { "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто" };
string sto[] = { "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот" };
string thousand[] = { "одна тысяча", "две тысячи", "три тысячи", "четыре тысячи", "пять тысяч", "шесть тысяч", "семь тысяч", "восемь тысяч", "девять тысяч" };
string ConvetToString(int a, int b, int c);
int main()
{
setlocale(LC_ALL, "rus");
double numb, i, drobn;
int natur, dr; //переменные для работы с целым и дробным
int a, b, c, d, e, f; //"временные" переменные для целого
int x, y; //"временные" переменные для дробной части
string odin, dva, tri, chetir, pyat, shest; //переменные для целого
string otr; //переменая для минуса
string one, two, three; //переменные для дробной части
string result;
cout << "Введите число: ";
//cin >> numb;
numb = 12345.56;
drobn = modf(numb, &i);
drobn *= 100;
dr = drobn + 0.5;
natur = (int)numb;
//решение для целой части
//разбиваем число на составные цифры для целой части
a = natur % 10; //число единиц
b = (natur % 100) / 10; //число десятка
c = (natur % 1000) / 100; //число сотни
f = natur / 100000; //число сотен тысяч
e = (natur % 100000) / 10000; //число десятков тысяч
d = (natur % 10000) / 1000; //число тысяч
result = ConvetToString(d, e, f);
result = result + " тысячь ";
result = result + ConvetToString(a, b, c);
result = result + " рублей ";
//решение для дробной части
x = dr / 10;
y = dr % 10;
result = result + ConvetToString( x, y,0);
result = result + " копеек";
cout << result ;
}
string ConvetToString(int a, int b, int c )
string result = "", odin, dva, tri;
if (a != 0 && b != 1)
odin = edin[a - 1];
else if (a == 0 && b == 1)
odin = "десять";
else if (a == 0 && b == 0)
odin = "";
if (b == 0)
dva = "";
else if (b == 1 && a != 0)
dva = teen[a - 1];
else if (b != 1)
dva = des[b - 2];
if (c != 0)
tri = sto[c - 1];
if (a == 0 && b == 0 && c == 0)
odin = "ноль";
result = tri + " " + dva + " " + odin;
return result;
Copyright © 2024 SCHOLAR.TIPS - All rights reserved.
Answers & Comments
Ответ:
Примерно так, только нужно еще со склонением рублей и копеек поиграться.
#include <iostream>
#include <string>
#include <cmath>
#include <stdio.h>
using namespace std;
const
string edin[] = { "одна", "две", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять" };
string teen[] = { "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать" };
string des[] = { "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто" };
string sto[] = { "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот" };
string thousand[] = { "одна тысяча", "две тысячи", "три тысячи", "четыре тысячи", "пять тысяч", "шесть тысяч", "семь тысяч", "восемь тысяч", "девять тысяч" };
string ConvetToString(int a, int b, int c);
int main()
{
setlocale(LC_ALL, "rus");
double numb, i, drobn;
int natur, dr; //переменные для работы с целым и дробным
int a, b, c, d, e, f; //"временные" переменные для целого
int x, y; //"временные" переменные для дробной части
string odin, dva, tri, chetir, pyat, shest; //переменные для целого
string otr; //переменая для минуса
string one, two, three; //переменные для дробной части
string result;
cout << "Введите число: ";
//cin >> numb;
numb = 12345.56;
drobn = modf(numb, &i);
drobn *= 100;
dr = drobn + 0.5;
natur = (int)numb;
//решение для целой части
//разбиваем число на составные цифры для целой части
a = natur % 10; //число единиц
b = (natur % 100) / 10; //число десятка
c = (natur % 1000) / 100; //число сотни
f = natur / 100000; //число сотен тысяч
e = (natur % 100000) / 10000; //число десятков тысяч
d = (natur % 10000) / 1000; //число тысяч
result = ConvetToString(d, e, f);
result = result + " тысячь ";
result = result + ConvetToString(a, b, c);
result = result + " рублей ";
//решение для дробной части
x = dr / 10;
y = dr % 10;
result = result + ConvetToString( x, y,0);
result = result + " копеек";
cout << result ;
}
string ConvetToString(int a, int b, int c )
{
string result = "", odin, dva, tri;
if (a != 0 && b != 1)
odin = edin[a - 1];
else if (a == 0 && b == 1)
odin = "десять";
else if (a == 0 && b == 0)
odin = "";
if (b == 0)
dva = "";
else if (b == 1 && a != 0)
dva = teen[a - 1];
else if (b != 1)
dva = des[b - 2];
if (c != 0)
tri = sto[c - 1];
if (a == 0 && b == 0 && c == 0)
odin = "ноль";
result = tri + " " + dva + " " + odin;
return result;
}