Добавил:
alex20000
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:sem3_1
.c#include <stdio.h>
#include <string.h>
int is_valid(char a);
int is_symbol(char* str, int index);
int is_range(char* str, int index);
int main(int argc, char** argv)
{
char input[128];
char prev_end;
do
{
putchar('>');
scanf("%s", input);
prev_end = '\0';
/*for(int i = 0; i < strlen(input); ++i)
{
printf("%d", is_range(input, i));
}*/
if(!is_range(input, 1))
putchar(input[0]);
for(int i = 1; i < strlen(input)-1; ++i)
{
if(!is_range(input, i + 1) && !is_range(input, i - 1) && !is_range(input, i))
putchar(input[i]);
if(is_valid(input[i - 1]) && (input[i] == '-') && is_valid(input[i + 1]))
{
if(input[i - 1] < input[i + 1])
{
for(char j = input[i - 1]; j <= input[i + 1]; ++j)
{
if(is_valid(j) &&
!((j == input[i - 1]) && (j == prev_end)))
putchar(j);
}
}
else
{
for(char j = input[i - 1]; j >= input[i + 1]; --j)
{
if(is_valid(j) &&
!((j == input[i - 1]) && (j == prev_end)))
putchar(j);
}
}
prev_end = input[i + 1];
}
}
if(!is_range(input, strlen(input)-2))
putchar(input[strlen(input)-1]);
putchar('\n');
}while(strcmp(input, "exit"));
return 0;
}
int is_valid(char a)
{
return ((a >= '0') && (a <= '9')) || ((a >= 'a') && (a <= 'z')) ||
((a >= 'A') && (a <= 'Z'));
}
int is_symbol(char* str, int index)
{
return (index < strlen(str)) && (index >= 0);
}
int is_range(char* str, int index)
{
return is_symbol(str, index) && is_symbol(str, index - 1) && is_symbol(str, index + 1) && str[index] == '-' && is_valid(str[index - 1]) && is_valid(str[index + 1]);
}
Соседние файлы в предмете Информатика