Пример #1
0
void ComputeSkyline( struct Skyline *s, struct Building building )
{
    int left, right, i;

    if ( s->num==0 )
    {
        s->num = 3;
        s->height[0] = 0;
        s->height[1] = buildings->height;
        s->height[2] = 0;

        s->x[0]      = MIN_X;
        s->x[1]      = buildings->left;
        s->x[2]      = buildings->right;
        s->x[3]      = MAX_X;
    }
    else
    {
        for (i = 0; i < s->num; i++)
        {
            if (s->x[i] < building.left && building.left < s->x[i+1])
                left = i + 1;
            if (s->x[i] < building.right && building.right < s->x[i+1])
                right = i + 1;
        }

        insert(s->x, s->num+1, right, building.right);
        insert(s->height, s->num, right, s->height[right-1]);
        s->num++;

        insert(s->x, s->num+1, left, building.left);
        insert(s->height, s->num, left, MAX(building.height, s->height[left-1]));
        s->num++;

        for (i = left; i < right + 1; i++)
        {
            s->height[i] = MAX(s->height[i], building.height);
        }

        for (i = 1; i < s->num-1; i++)
        {
            if (s->height[i] == s->height[i+1])
            {
                remove1(s->x, s->num+1, i+1);
                remove1(s->height, s->num+1, i+1);
                s->num--;
            }
        }
            
    }
}
Пример #2
0
int main(void)
{
	char original[50];
	int i = 0;
	int numofchartoremove;
	int position;
	char character;
	
	int remove1(char original[], int position, int numofchartoremove);
	
	printf("enter the string \n");
	
	do{
		character = getchar();
		original[i] = character;
		++i;
	}while(character != '\n');

	printf("%s", original);
	
	original[i - 1] = '\0';
	
	printf("enter the position\n");
	scanf("%i", &position);
	printf("enter the number of characters to remove\n");
	scanf("%i", &numofchartoremove);
	
	remove1(original, position, numofchartoremove);
	
	return 0;
}