Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<fstream>
- #include<iostream>
- #include <vector>
- #include <string>
- int stepen(int y, int r) {
- int z = y;
- for (int q = 2; q <= r; q++) {
- z = y * z;
- }
- if (r == 0) { return 1; }
- else { return z; }
- }/*функция степени*/
- int modul(int y) {
- if (y >= 0) { return y; }
- else { return -y; }
- }/*функция модуля*/
- using namespace std;
- int main()
- {
- int N;
- ifstream fin("filename1.txt");
- ofstream fout("filename2.txt");
- while (!fin.eof()) {
- fin >> N;
- int g = 0;/*хождение по числу*/
- int N;/*наше число*/
- vector<long>Chislo;/*запихаем в вектор число*/
- int R = modul(N), k = 1;/*1)модуль 2)кол-во цифр*/
- while (R >= 10) {
- R /= 10;
- k++;
- }/*выясняем кол-во цифр*/
- R = modul(N);
- int s = 0;/*номер цифры*/
- while (k != 0) {
- int a = R % stepen(10, s + 1) / stepen(10, s);
- Chislo.insert(Chislo.begin() + 0, a);
- k--;
- s++;
- }/*пихаем в массив*/
- vector <const char*> ones{ "", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };/*единицы*/
- vector<const char*> tens{ "", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" };/*десятки*/
- vector <const char*> exceptions{ "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };/*исключения из десяток*/
- vector<const char*> big{ "", "hundred","thousand", "million", "billion" };/*большие числа*/
- if (N == 0) { fout << "zero"; }/*если ноль*/
- else
- {
- if (N < 0) { fout << "minus "; }
- while (Chislo.size() > 0) {
- if (Chislo.size() % 3 == 0) /*если 3 цифры*/
- {
- if (Chislo[g] != 0) { fout << ones[Chislo[g]] << " " << big[1] << " "; }
- if (Chislo[g + 1] == 1) { fout << exceptions[Chislo[g + 2]] << " "; }
- else if (Chislo[g + 1] == 0 && Chislo[g + 2] != 0) { fout << ones[Chislo[g + 2]] << " "; }
- else if (Chislo[g + 1] == 0 && Chislo[g + 2] == 0) { fout << ""; }
- else if (Chislo[g + 1] != 0 && Chislo[g + 2] != 0) { fout << tens[Chislo[g + 1]] << " " << ones[Chislo[g + 2]] << " "; }
- else { fout << tens[Chislo[g + 1]] << " "; }
- if ((Chislo[g] != 0 || Chislo[g + 1] != 0 || Chislo[g + 2] != 0) && (Chislo.size() - 3) / 3 == 0) { fout << big[0] << " "; }
- else if ((Chislo[g] != 0 || Chislo[g + 1] != 0 || Chislo[g + 2] != 0) && (Chislo.size() - 3) / 3 == 1) { fout << big[2] << " "; }
- else if ((Chislo[g] != 0 || Chislo[g + 1] != 0 || Chislo[g + 2] != 0) && (Chislo.size() - 3) / 3 == 2) { fout << big[3] << " "; }
- else if ((Chislo[g] != 0 || Chislo[g + 1] != 0 || Chislo[g + 2] != 0) && (Chislo.size() - 3) / 3 == 2) { fout << big[4] << " "; }
- }
- else if (Chislo.size() % 3 == 2) /*если 2 цифры*/
- {
- if (Chislo[g] == 1) { fout << exceptions[Chislo[g + 1]] << " "; }
- else { fout << tens[Chislo[g]] << " " << ones[Chislo[g + 1]] << " "; }
- if ((Chislo[g] != 0 || Chislo[g + 1] != 0 || Chislo[g + 2] != 0) && (Chislo.size() - 2) / 3 == 0) { fout << big[0] << " "; }
- else if ((Chislo[g] != 0 || Chislo[g + 1] != 0 || Chislo[g + 2] != 0) && (Chislo.size() - 2) / 3 == 1) { fout << big[2] << " "; }
- else if ((Chislo[g] != 0 || Chislo[g + 1] != 0 || Chislo[g + 2] != 0) && (Chislo.size() - 2) / 3 == 2) { fout << big[3] << " "; }
- else if ((Chislo[g] != 0 || Chislo[g + 1] != 0 || Chislo[g + 2] != 0) && (Chislo.size() - 2) / 3 == 2) { fout << big[4] << " "; }
- }
- else /*если 1 цифры*/
- {
- fout << ones[Chislo[g]] << " ";
- if ((Chislo[g] != 0 || Chislo[g + 1] != 0 || Chislo[g + 2] != 0) && (Chislo.size() - 1) / 3 == 0) { fout << big[0] << " "; }
- else if ((Chislo[g] != 0 || Chislo[g + 1] != 0 || Chislo[g + 2] != 0) && (Chislo.size() - 1) / 3 == 1) { fout << big[2] << " "; }
- else if ((Chislo[g] != 0 || Chislo[g + 1] != 0 || Chislo[g + 2] != 0) && (Chislo.size() - 1) / 3 == 2) { fout << big[3] << " "; }
- else if ((Chislo[g] != 0 || Chislo[g + 1] != 0 || Chislo[g + 2] != 0) && (Chislo.size() - 1) / 3 == 2) { fout << big[4] << " "; }
- }
- if (Chislo.size() % 3 == 0)
- {
- Chislo.erase(Chislo.begin());
- Chislo.erase(Chislo.begin());
- Chislo.erase(Chislo.begin());
- }/*Если 3 числа, то убираем 3 в начале*/
- else if (Chislo.size() % 3 == 2)
- {
- Chislo.erase(Chislo.begin());
- Chislo.erase(Chislo.begin());
- }/*Если 2 числа, то убираем 2 в начале*/
- else { Chislo.erase(Chislo.begin()); }/*Если 1 число, то убираем 1 в начале*/
- }
- }
- }
- fin.close();
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement