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

Froize

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

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

# 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;
}
}
 
You should do your homework yourself or else you won't learn anything.
 
Составить программу, которая для любого натурального числа печатает
количество цифр в записи этого числа.
Вот:
#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;
}
 
Последнее редактирование:
Напишите программу, которая читает натуральное число в десятичном
представлении, а на выходе выдает это же число в десятичном представлении и на
естественном языке. Например: 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 ");
}
}
}
}
 
Последнее редактирование:
Итак алгоритм
1. Счиываешь число.
2. функцией itoa(); переводишь его в массив
3. На выход отправляешь strlen(); где аргумент - массив в который перевел число
 
Итак алгоритм
1. Счиываешь число.
2. функцией itoa(); переводишь его в массив
3. На выход отправляешь strlen(); где аргумент - массив в который перевел число

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