i need to enter number of points(x,y), and then sort the points,from the closest one to (0,0) to the one that is far.. for example:
Enter number of points: 3
Enter point: 1 6
Enter point: 2 5
Enter point: 4 4
Sorted points:(2,5) (4,4) (1,6)
now i did a function that will find the distance,and i did an array and put the distance between two coordinate x and y,and i want to use merge sort to sort the array, my problem is how to go back and print the actual coordinate x y ... (i hope you would understand the problem),what can i do? i thought of putting the cordinate an array and sort them but that won't work :\ (and i didn't learn struct so i can't use unless if there is no other way ...) plz anyone can help me i really have no idea have to continue:\
#include <stdio.h>
#include <stdlib.h>
void Enter_numbers(int x,int *z,int *first_coordinate,int *second_coordinate);
int distance(int a,int b);
void merge(int a[], int na, int b[], int nb, int c[]);
int merge_sort(int ar[], int n);
int main()
{
    int x;
    int *z;
    int *first_coordinate;
    int *second_coordinate;
    printf("Enter number of points: ");
    scanf("%d",&x);
    z=(int*)malloc(x*sizeof(int));
    first_coordinate=(int*)malloc(x*sizeof(int));
    second_coordinate=(int*)malloc(x*sizeof(int));
    Enter_numbers(x,z,first_coordinate,second_coordinate);
    free(z);
    free(first_coordinate);
    free(second_coordinate);
    return 0;
}
int distance(int a,int b)
{
    int dis;
    dis=((a*a)+(b*b));
    return dis;
}
void Enter_numbers(int x,int *z,int *first_coordinate,int *second_coordinate)
{
    int a=0,b=0;
    int i=0;
    int diss=0;
    while(x>0)
    {
        printf("Enter points: ");
        scanf("%d %d",&a,&b);
        diss=distance(a,b);
        z[i]=diss;
        first_coordinate[i]=a;
        second_coordinate[i]=b;
        ++i;
        x--;
    }
}
and the merge sort function i will use after i figure what to do :
int merge_sort(int ar[], int n)
{ 
    int len;
    int *temp_array, *base;
    temp_array = (int*)malloc(sizeof(int)*n);
    if(temp_array == NULL) {
        printf("Dynamic Allocation Error in merge_sort");
        return FAILURE;
    }
    for (len = 1; len < n; len *= 2) {
        for (base = ar; base < ar + n; base += 2 * len) {
            merge(base, len, base + len, len, temp_array);
            memcpy(base, temp_array, 2*len*sizeof(int));
        }
    }
    free(temp_array);
    return SUCCESS;
}
and here is merge ...
void merge(int a[], int na, int b[], int nb, int c[])
{
   int ia, ib, ic;
   for(ia = ib = ic = 0; (ia < na) && (ib < nb); ic++)
   {
       if(a[ia] < b[ib]) {
           c[ic] = a[ia];
           ia++;
       }
       else {
           c[ic] = b[ib];
           ib++;
       }
   }
   for(;ia < na; ia++, ic++) c[ic] = a[ia];
   for(;ib < nb; ib++, ic++) c[ic] = b[ib];
}
 
    