Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

sem3_1

.c
Скачиваний:
0
Добавлен:
29.05.2019
Размер:
1.79 Кб
Скачать
#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]);
}
Соседние файлы в предмете Информатика