#include <stdio.h>
// Function to remove a given number of elements from an array
void removeElements( int arr[ ] , int * size, int position, int count) {
// Validate position and count
if ( position < 0 || position >= * size || count < 0 ) {
printf ( "Invalid position or count for removal.\n " ) ;
return ;
}
// Adjust count if it exceeds the remaining elements
if ( position + count > * size) {
count = * size - position;
}
// Shift elements to the left to overwrite the removed elements
for ( int i = position; i < * size - count; i++ ) {
arr[ i] = arr[ i + count] ;
}
// Update the size of the array
* size - = count;
}
void printArray( int arr[ ] , int size) {
printf ( "Array: [ " ) ;
for ( int i = 0 ; i < size; i++ ) {
printf ( "%d " , arr[ i] ) ;
}
printf ( "]\n " ) ;
}
int main( ) {
int arr[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 } ;
int size = sizeof ( arr) / sizeof ( arr[ 0 ] ) ;
printf ( "Original " ) ;
printArray( arr, size) ;
int position_to_remove = 2 ; // Index from where to start removing
int number_of_elements_to_remove = 3 ; // Number of elements to remove
removeElements( arr, & size, position_to_remove, number_of_elements_to_remove) ;
printf ( "After removing %d elements from position %d: " , number_of_elements_to_remove, position_to_remove) ;
printArray( arr, size) ;
// Example 2: Removing from the end
int arr2[ ] = { 1 , 2 , 3 , 4 , 5 } ;
int size2 = sizeof ( arr2) / sizeof ( arr2[ 0 ] ) ;
printf ( "\n Original " ) ;
printArray( arr2, size2) ;
removeElements( arr2, & size2, 3 , 2 ) ; // Remove 2 elements from index 3 (elements 4 and 5)
printf ( "After removing 2 elements from position 3: " ) ;
printArray( arr2, size2) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyBGdW5jdGlvbiB0byByZW1vdmUgYSBnaXZlbiBudW1iZXIgb2YgZWxlbWVudHMgZnJvbSBhbiBhcnJheQp2b2lkIHJlbW92ZUVsZW1lbnRzKGludCBhcnJbXSwgaW50ICpzaXplLCBpbnQgcG9zaXRpb24sIGludCBjb3VudCkgewogICAgLy8gVmFsaWRhdGUgcG9zaXRpb24gYW5kIGNvdW50CiAgICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49ICpzaXplIHx8IGNvdW50IDwgMCkgewogICAgICAgIHByaW50ZigiSW52YWxpZCBwb3NpdGlvbiBvciBjb3VudCBmb3IgcmVtb3ZhbC5cbiIpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBBZGp1c3QgY291bnQgaWYgaXQgZXhjZWVkcyB0aGUgcmVtYWluaW5nIGVsZW1lbnRzCiAgICBpZiAocG9zaXRpb24gKyBjb3VudCA+ICpzaXplKSB7CiAgICAgICAgY291bnQgPSAqc2l6ZSAtIHBvc2l0aW9uOwogICAgfQoKICAgIC8vIFNoaWZ0IGVsZW1lbnRzIHRvIHRoZSBsZWZ0IHRvIG92ZXJ3cml0ZSB0aGUgcmVtb3ZlZCBlbGVtZW50cwogICAgZm9yIChpbnQgaSA9IHBvc2l0aW9uOyBpIDwgKnNpemUgLSBjb3VudDsgaSsrKSB7CiAgICAgICAgYXJyW2ldID0gYXJyW2kgKyBjb3VudF07CiAgICB9CgogICAgLy8gVXBkYXRlIHRoZSBzaXplIG9mIHRoZSBhcnJheQogICAgKnNpemUgLT0gY291bnQ7Cn0KCnZvaWQgcHJpbnRBcnJheShpbnQgYXJyW10sIGludCBzaXplKSB7CiAgICBwcmludGYoIkFycmF5OiBbICIpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICBwcmludGYoIiVkICIsIGFycltpXSk7CiAgICB9CiAgICBwcmludGYoIl1cbiIpOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBhcnJbXSA9IHsxMCwgMjAsIDMwLCA0MCwgNTAsIDYwLCA3MCwgODB9OwogICAgaW50IHNpemUgPSBzaXplb2YoYXJyKSAvIHNpemVvZihhcnJbMF0pOwoKICAgIHByaW50ZigiT3JpZ2luYWwgIik7CiAgICBwcmludEFycmF5KGFyciwgc2l6ZSk7CgogICAgaW50IHBvc2l0aW9uX3RvX3JlbW92ZSA9IDI7IC8vIEluZGV4IGZyb20gd2hlcmUgdG8gc3RhcnQgcmVtb3ZpbmcKICAgIGludCBudW1iZXJfb2ZfZWxlbWVudHNfdG9fcmVtb3ZlID0gMzsgLy8gTnVtYmVyIG9mIGVsZW1lbnRzIHRvIHJlbW92ZQoKICAgIHJlbW92ZUVsZW1lbnRzKGFyciwgJnNpemUsIHBvc2l0aW9uX3RvX3JlbW92ZSwgbnVtYmVyX29mX2VsZW1lbnRzX3RvX3JlbW92ZSk7CgogICAgcHJpbnRmKCJBZnRlciByZW1vdmluZyAlZCBlbGVtZW50cyBmcm9tIHBvc2l0aW9uICVkOiAiLCBudW1iZXJfb2ZfZWxlbWVudHNfdG9fcmVtb3ZlLCBwb3NpdGlvbl90b19yZW1vdmUpOwogICAgcHJpbnRBcnJheShhcnIsIHNpemUpOwoKICAgIC8vIEV4YW1wbGUgMjogUmVtb3ZpbmcgZnJvbSB0aGUgZW5kCiAgICBpbnQgYXJyMltdID0gezEsIDIsIDMsIDQsIDV9OwogICAgaW50IHNpemUyID0gc2l6ZW9mKGFycjIpIC8gc2l6ZW9mKGFycjJbMF0pOwoKICAgIHByaW50ZigiXG5PcmlnaW5hbCAiKTsKICAgIHByaW50QXJyYXkoYXJyMiwgc2l6ZTIpOwoKICAgIHJlbW92ZUVsZW1lbnRzKGFycjIsICZzaXplMiwgMywgMik7IC8vIFJlbW92ZSAyIGVsZW1lbnRzIGZyb20gaW5kZXggMyAoZWxlbWVudHMgNCBhbmQgNSkKCiAgICBwcmludGYoIkFmdGVyIHJlbW92aW5nIDIgZWxlbWVudHMgZnJvbSBwb3NpdGlvbiAzOiAiKTsKICAgIHByaW50QXJyYXkoYXJyMiwgc2l6ZTIpOwoKICAgIHJldHVybiAwOwp9Cg==