Помогите решить задачу на C++

Froize

Создатель
Регистрация
30 Ноя 2012
Сообщения
29
Реакции
3
Составить программу, которая для любого натурального числа печатает
количество цифр в записи этого числа.
Или вот эту:
Напишите программу, которая читает натуральное число в десятичном
представлении, а на выходе выдает это же число в десятичном представлении и на
естественном языке. Например: 7 - семь, 204 - двести четыре, 52 - пятьдесят два.

Обе должны использовать оператор выбора switch.
 

nayman

Создатель
Регистрация
11 Дек 2013
Сообщения
10
Реакции
1
Примерно вот так:

# include <stdio.h>
# include <math.h>
unsigned int y, n1, n2;
void main ()

{ printf("\n Vvedite chislo:");
scanf("%d", &y);

n1=(y)/(10);
n2=(y)%(10);

switch (n1)
{ case 1:
switch (n2)
{ case 0: printf("desyat`"); break;
case 1: printf("odinnadcat`"); break;
case 2: printf("dvenadcat`"); break;
case 3: printf("trinadcat`"); break;
case 4: printf("chetirnadcat`"); break;
case 5: printf("piatnadcat`"); break;
case 6: printf("shestnadcat`"); break;
case 7: printf("semnadcat`"); break;
case 8: printf("vosemnadcat`"); break;
case 9: printf("deviatnadcat`"); break;
};
break;
case 2: printf("dvadcat`"); break;
case 3: printf("tridcat`"); break;
case 4: printf("sorok"); break;
case 5: printf("piat`desiat"); break;
case 6: printf("shest`desiat"); break;
case 7: printf("semdesiat"); break;
case 8: printf("vosemdesiat"); break;
case 9: printf("devianosto"); break;
};
if (n1!=1)
switch (n2)
{ case 1: printf("odin"); break;
case 2: printf("dva"); break;
case 3: printf("tri"); break;
case 4: printf("chetire"); break;
case 5: printf("piat`"); break;
case 6: printf("shest`"); break;
case 7: printf("sem`"); break;
case 8: printf("vosem`"); break;
case 9: printf("deviat`"); break;
}
}
 

Roflmao123

Писатель
Регистрация
6 Ноя 2015
Сообщения
7
Реакции
0
You should do your homework yourself or else you won't learn anything.
 

lexxh6

Создатель
Регистрация
31 Окт 2014
Сообщения
12
Реакции
12
Составить программу, которая для любого натурального числа печатает
количество цифр в записи этого числа.
Вот:
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#define MAXC 100
main(){
char s[MAXC];
int c,i=0,n,k=0;
while ((c=getchar())&&isdigit(c))
s[i++] =c;
s='\0';
n=atoi(s);
switch (n){
case 0:
printf("0 ili oshibka vvoda\n");
break;
default:
while(n>0){
n=n/10;
k++;
}
printf("kol-vo:%d\n",i);
break;
}
return 0;
}
 
Последнее редактирование:

lexxh6

Создатель
Регистрация
31 Окт 2014
Сообщения
12
Реакции
12
Напишите программу, которая читает натуральное число в десятичном
представлении, а на выходе выдает это же число в десятичном представлении и на
естественном языке. Например: 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 ");
}
}
}
}
 
Последнее редактирование:

SkaterSPB

Создатель
Регистрация
5 Окт 2011
Сообщения
21
Реакции
1
Итак алгоритм
1. Счиываешь число.
2. функцией itoa(); переводишь его в массив
3. На выход отправляешь strlen(); где аргумент - массив в который перевел число
 

mibdeveloper

Писатель
Регистрация
18 Окт 2015
Сообщения
4
Реакции
0
Итак алгоритм
1. Счиываешь число.
2. функцией itoa(); переводишь его в массив
3. На выход отправляешь strlen(); где аргумент - массив в который перевел число

Это какая задача? Зачем там еще массив. Там все через switch. Значит в тупую берем число и проверяем.
 

mibdeveloper

Писатель
Регистрация
18 Окт 2015
Сообщения
4
Реакции
0
И думаю, что массивы они еще не учили )))
 

SkaterSPB

Создатель
Регистрация
5 Окт 2011
Сообщения
21
Реакции
1
Это какая задача? Зачем там еще массив. Там все через switch. Значит в тупую берем число и проверяем.
Блин, не увидел что нужно на свичах
Вот эта задача
Составить программу, которая для любого натурального числа печатает
количество цифр в записи этого числа.
Код:
   int a = 123;
    char buf[20];
    itoa(a, buf, 10);
    cout << "strlen = "<< strlen(buf) << endl;
проверил, работает
 
Сверху