Упражнение 3.3. Напишите функцию expand(s1, s2), заменяющую сокращенную запись наподобие a-z в строке s1 эквивалентной полной записью abc. . . xyz в s2. В s1 допускаются буквы (прописные и строчные) и цифры. Следует уметь справляться с такими случаями, как a-b-c, a-z0-9 и -а-b. Считайте знак - в начале или в конце s1 обычным символом минус.
#include <stdio.h>
#define LEN 500
void expand(char s1[], char s2[]);
int main()
{
char s1[LEN], s2[LEN];
int c, i;
for(i = 0; (c = getchar()) != EOF; i++)//заполняем массив знаками
s1[i] = c;
s1[i] = '\0';
expand(s1, s2);
printf("%s", s2);
printf("\n");
return 0;
}
/*expand*/
void expand(char s1[], char s2[])
{
int i, j;
char c;
for(i=j=0; (c=s1[i++]) != '\0';)
{
/*если '-'встречается внутри
* строки( a-z -a-z) после пробела*/
if(c == ' ' && s1[i] == '-')
s2[j++] = c;
else if(s1[i] =='-' && s1[i+1] >=c)
{
i++;
while(c<s1[i])//печатаем полный список
s2[j++] = c++;
}
else
s2[j++] = c;
}
s2[j] = '\0';
}
Результат:
Комментариев нет:
Отправить комментарий