Обработка символьного рядка - C (СИ) (154546)
Формулировка задачи:
Проверить, является правильной записью беззнакового целого числа, в системе счисления с основанием 5, введенная с клавиатуры символьная строка (с возможными символами пробела перед числом и после него). Если да, то определить и напечатать десятичное значение этого числа.
Решение задачи: «Обработка символьного рядка»
textual
Листинг программы
#include<stdio.h>
#include<stdlib.h>
int Check(char *s, char **beg, char **end)
{
for(; *s && *s == ' '; ++s)
;
for(*beg = s; *s && (*s >= '0' && *s <= '4'); ++s)
;
for(*end = s - 1; *s && *s == ' ' ; ++s)
;
return !(*s);
}
int Number(char *beg, char *end)
{
return beg <= end ? (*end - '0') + 5 * Number(beg, end - 1) : 0;
}
int main()
{
char s[1024], *beg, *end;
int a;
fgets(s, 1024, stdin);
s[strlen(s) - 1] = '\0';
if (Check(s, &beg, &end))
{
a = Number(beg, end);
printf("a = %d\n", a);
}
return 0;
}