I am refactoring my code to make it more dynamic, but by including the line int n = sizeof(vetor)/sizeof(int);
within the function bubble
it no longer works correctly. Where am I going wrong?
Modified Code
void bubble(int vetor[])
{
int n = sizeof(vetor)/sizeof(int);
int k = n;
int aux;
for(int i=0; i<n; i++)
{
for(int j=0; j<k; j++)
{
if(vetor[j]>vetor[j+1])
{
aux=vetor[j];
vetor[j]=vetor[j+1];
vetor[j+1]=aux;
}
}
k--;
}
}
int main()
{
int vetor[]={10,3,5,8,1,9,2,4,7,0,6,-1};
int n=sizeof(vetor)/sizeof(int);
bubble(vetor);
printf("\n\n\n");
for(int i=0;i<n;i++)
{
printf("%d\n",vetor[i]);
}
printf("\n\n\n");
system("pause");
return 0;
}
Original Code
void bubble(int vetor[],int n)
{
int k = n;
int aux;
for(int i=0; i<n; i++)
{
for(int j=0; j<k; j++)
{
if(vetor[j]>vetor[j+1])
{
aux=vetor[j];
vetor[j]=vetor[j+1];
vetor[j+1]=aux;
}
}
k--;
}
}
int main()
{
int vetor[]={10,3,5,8,1,9,2,4,7,0,6,-1};
int n=sizeof(vetor)/sizeof(int);
bubble(vetor,n);
printf("\n\n\n");
for(int i=0;i<n;i++)
{
printf("%d\n",vetor[i]);
}
printf("\n\n\n");
system("pause");
return 0;
}