Я делал эту программу, используя язык Си, который в основном принимает статический массив целых чисел, уже в возрастающем порядке, и целое число, которое будет добавлено в этот массив. Даже после добавления последовательность целых чисел в массиве должна оставаться в порядке возрастания. Я написал следующую программу:
/*WAP to accept a sorted array and insert an integer
value at its correct place using function*/
#include<stdio.h>
void showArray(int *location,int size)
{
for(int i=0;i<size;i++)
{
printf("%d ",*location);
location++;
}
}
void insertElement(int *location,int element,int size)
{
/*unaltered_elements refers to the elements
whose position has not been changed*/
int unaltered_elements=0;
int insertion_status=0;
while(insertion_status==0) //while insertion of element is incomplete
{
if(*location>=element)
{
/*When the entered element is greater than
the element at the position, it is from here that the
shifting of elements to next position begins*/
int temp1=element;
for(int i=0;i<size-unaltered_elements;i++) //insertion loop
{
int temp2=*location;
*location=temp1;
temp1=temp2;
location++;
}
*location=temp1;
insertion_status=1;
}
else
{
//no change in position of elements
location++;
unaltered_elements++;
insertion_status=0;
}
}
}
int main()
{
int array[]={1,3,5,7,9,11,12},element;
int size_of_array=sizeof(array)/sizeof(int);
printf("\nEnter the element to be inserted: ");
scanf(" %d",&element);
//Original Array
printf("\nOriginal Array\t: ");
showArray(&array[0],size_of_array);
//New Array
printf("\nSIZE BEFORE INSERTING ELEMENT: %d\n",size_of_array);
insertElement(&array[0],element,size_of_array);
printf("\nSIZE AFTER INSERTING ELEMENT: %d\n",size_of_array);
printf("\nNew Array\t: ");
showArray(&array[0],size_of_array+1);
return 0;
}
РЕЗУЛЬТАТ:
Enter the element to be inserted: 2
Original Array : 1 3 5 7 9 11 12
SIZE BEFORE INSERTING ELEMENT: 7
SIZE AFTER INSERTING ELEMENT: 12
New Array : 1 2 3 5 7 9 11 12 6422284 3620864 6422352 4199048 1
Когда я проверял размер до и после вставки элемента (то есть вызова функции insertElement () в main ()) я обнаружил, что он другой. Как это изменилось, даже если я не изменил это в своей программе?
Вот что я уже пробовал / нашел:
Я проверил размер во вставкеЗациклился в функции insertElement () и обнаружил, что размер не изменился в теле функции, но обнаружил, что значение изменилось в функции main () после вызова insertElement ().
Такжеразмер массива после вызова функции insertElement () оказался равным последнему элементу массива. Например: если массив имеет элементы: 1 3 5 7 9, размер изменился до 9 после вызова функции insertElement (). Я нашел его, изменив последнее значение в объявлении массива.
Обратите внимание, что у меня нет проблем с вставкой элемента в нужное место;просто с неправильным размером массива, потому что это приводит к печати дополнительных значений