Напишите программу, которая читает натуральное число в десятичном
представлении, а на выходе выдает это же число в десятичном представлении и на
естественном языке. Например: 7 - семь, 204 - двести четыре, 52 - пятьдесят два.
Читает от 1 до 999999. При желании можно расширить. Тщательно не тестировалась.
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <math.h>
#define MAXC 100
void itos (int n,int i);
main(){
char s[MAXC];
int c,i=0,n,k=0;
while ((c=getchar())&&isdigit(c))
s[i++] =c;
s='\0';
n=atoi(s);
itos(n,i);
return 0;
}
void itos(int n,int i) /*Печать n до 6 разрядов*/
{
int k;
int flag=0;
if (n>999999){
printf("previshenie diapazona, ispolzuite 4islo do 999 999 \n");
return;
}
while (i-->0)
{
k=n/((int)pow(10.0,i))%10;
if(i+1==6||i+1==3)
switch(k)
{
case 1: printf("sto "); break;
case 2: printf("dvesti "); break;
case 3: printf("trista "); break;
case 4: printf("chetiresta "); break;
case 5: printf("pyatsot "); break;
case 6: printf("shestsot "); break;
case 7: printf("semsot "); break;
case 8: printf("vosemsot "); break;
case 9: printf("devyatsot "); break;
}
if(i+1==5||i+1==2)
switch(k)
{
case 1: flag=1; break;
case 2: printf("dvadtsat "); break;
case 3: printf("tridtsat "); break;
case 4: printf("sorok "); break;
case 5: printf("pyatdesyat "); break;
case 6: printf("shestdesyat "); break;
case 7: printf("semsdesyat "); break;
case 8: printf("vosemdesyat "); break;
case 9: printf("devyanosto "); break;
}
if(i+1==4||i+1==1){
if (flag == 1){
flag = 0;
switch(k)
{
case 0: printf("desyat "); break;
case 1: printf("odinnadcat "); break;
case 2: printf("dvenadcat "); break;
case 3: printf("trinadcad "); break;
case 4: printf("4etirnadcat "); break;
case 5: printf("pyatnadcat "); break;
case 6: printf("shestnadcat "); break;
case 7: printf("semnadcat "); break;
case 8: printf("vosemnadcat "); break;
case 9: printf("devyatnadcat "); break;
}
if(i+1==4)
printf ("tisya4 ");
}
else{
switch(k)
{
case 0:
if (i+1==4)
printf ("tisya4 ");
break;
case 1:
if (i+1==4)
printf("odna ");
else if (i+1==1)
printf("odin ");
break;
case 2:
if (i+1==4)
printf("dve ");
else if (i+1==1)
printf("dva ");
break;
case 3: printf("tri "); break;
case 4: printf("4etire "); break;
case 5: printf("pyat "); break;
case 6: printf("shest "); break;
case 7: printf("sem "); break;
case 8: printf("vosem "); break;
case 9: printf("devyat "); break;
}
if(i+1==4)
if (k==1)
printf("tisyacha ");
else if (k>=2&&k<=4)
printf("tisyachi ");
else if (k>4)
printf("tisyach ");
}
}
}
}