Другие языки программирования и технологии
С клавиатуры вводится целое число от 1 до 1000 обозначающую сумму в рублях. Программа должна печатать эту сумму прописью
Помогите пожалуйста решить задачу код С++
#include <stdio.h>
#include <locale.h>
bool output_snum(FILE* hout, int num){
if(!(num >= 1 && num <= 1000)){
return false;
}
int n = 0, d = 1;
for(int i = num; i != 0; i /= 10){
d *= 10;
++n;
}
const wchar_t* ds1[] = {
{L"один"}, {L"два"}, {L"три"}, {L"четыре"}, {L"пять"},
{L"шесть"}, {L"семь"}, {L"восемь"}, {L"девять"},
{L"десять"}, {L"одиннадцать"}, {L"двенадцать"}, {L"тринадцать"}, {L"четырнадцать"},
{L"пятнадцать"}, {L"шестнадцать"}, {L"семнадцать"}, {L"восемнадцать"}, {L"девятнадцать"}
};
const wchar_t* ds2[] = {
{L"двадцать"}, {L"тридцать"}, {L"сорок"}, {L"пятьдесят"}, {L"шестедьсят"},
{L"семьдесят"}, {L"восемьдесят"}, {L"девяносто"}
};
const wchar_t* ds3[] = {
{L"сто"}, {L"двести"}, {L"триста"}, {L"четыреста"}, {L"пятьсот"}, {L"шестьсот"},
{L"семьсот"}, {L"восемьсот"}, {L"девятьсот"}
};
const int index = (num/(d/10))%10;
switch(n){
case 1:
fwprintf(hout, L"%ls ", ds1[index - 1]);
break;
case 2:
if(index == 1){
fwprintf(hout, L"%ls ", ds1[num - 1]);
num = 0;
} else {
fwprintf(hout, L"%ls ", ds2[index - 2]);
}
break;
case 3:
fwprintf(hout, L"%ls ", ds3[index - 1]);
break;
case 4:
fwprintf(hout, L"тысяча ");
break;
}
d /= 10;
if((d > 0) && ((num % d) != 0)){
output_snum(hout, num % d);
}
return true;
}
int main(void){
setlocale(LC_ALL, ".866");
int num;
wprintf(L"\t\t\t\1 Введите число от 1-1000 \1\n> ");
while(scanf("%d", &num) == 1){
if(! output_snum(stdout, num)){
_putws(L"Ошибка: Число не входит в диапазон 1-1000 !");
}
wprintf(L"\n\n> ");
}
return 0;
}
#include <locale.h>
bool output_snum(FILE* hout, int num){
if(!(num >= 1 && num <= 1000)){
return false;
}
int n = 0, d = 1;
for(int i = num; i != 0; i /= 10){
d *= 10;
++n;
}
const wchar_t* ds1[] = {
{L"один"}, {L"два"}, {L"три"}, {L"четыре"}, {L"пять"},
{L"шесть"}, {L"семь"}, {L"восемь"}, {L"девять"},
{L"десять"}, {L"одиннадцать"}, {L"двенадцать"}, {L"тринадцать"}, {L"четырнадцать"},
{L"пятнадцать"}, {L"шестнадцать"}, {L"семнадцать"}, {L"восемнадцать"}, {L"девятнадцать"}
};
const wchar_t* ds2[] = {
{L"двадцать"}, {L"тридцать"}, {L"сорок"}, {L"пятьдесят"}, {L"шестедьсят"},
{L"семьдесят"}, {L"восемьдесят"}, {L"девяносто"}
};
const wchar_t* ds3[] = {
{L"сто"}, {L"двести"}, {L"триста"}, {L"четыреста"}, {L"пятьсот"}, {L"шестьсот"},
{L"семьсот"}, {L"восемьсот"}, {L"девятьсот"}
};
const int index = (num/(d/10))%10;
switch(n){
case 1:
fwprintf(hout, L"%ls ", ds1[index - 1]);
break;
case 2:
if(index == 1){
fwprintf(hout, L"%ls ", ds1[num - 1]);
num = 0;
} else {
fwprintf(hout, L"%ls ", ds2[index - 2]);
}
break;
case 3:
fwprintf(hout, L"%ls ", ds3[index - 1]);
break;
case 4:
fwprintf(hout, L"тысяча ");
break;
}
d /= 10;
if((d > 0) && ((num % d) != 0)){
output_snum(hout, num % d);
}
return true;
}
int main(void){
setlocale(LC_ALL, ".866");
int num;
wprintf(L"\t\t\t\1 Введите число от 1-1000 \1\n> ");
while(scanf("%d", &num) == 1){
if(! output_snum(stdout, num)){
_putws(L"Ошибка: Число не входит в диапазон 1-1000 !");
}
wprintf(L"\n\n> ");
}
return 0;
}
Без С++ сможешь правильно написать? Если нет - то проблема не в Си.
печатать эту сумму лучше не прописью, а на бумаге:)))
напиши на бумаге, после скомпилируй эту бумагу и задача решена элементарно ватсон
Похожие вопросы
- Как можно написать программу на языке C, которая будет выводить числа от 1 до 1000 без if, switch, do, while, for, goto?
- С клавиатуры вводится 4 числа. Вывести на экран сумму двух наименьших
- Вам даны все целые числа от 1 до N + 1, кроме одного. Найдите отсутствующее число.
- Помогите решить задачу на языке Паскаль. Найти сумму всех чётных чисел от 1 до 1000 (задачу решить 2 способами)
- все четные числа от 1 до 1000
- Проверте программу, которая вычисляет сумму целых чисел от а до 500 (значение a вводится с клавиатуры). c++
- Помогите! Информатика. Вводится пять чисел. Написать программу, которая вычисляет сумму всех четных из них.
- С клавиатуры вводятся числа, пока не будет введен ноль, вывести числа в обратно порядке. С++ Голову сломал !!!
- нужно решение с++. С клавиатуры вводится 13 целых чисел, найти позиции всех простых чисел.
- 1. Написать программу, которая заполняет массив целых чисел размеров 20 элементов значениями роста учащихся (случайные ч