Ordinare coordinate

di il
2 risposte

Ordinare coordinate

Salve e un po' di tempo che sto su questo esercizio che mi sta facendo impazzire...devo ordinare in modo non decrescente una serie di coordinate (x,y) utilizzando qsort della libreria stdlib.h
l'input è composto nella prima riga dal numero delle coordinate da inserire e dopo ovviamente le coordinate da tastiera e l'outpu composto dalle coordinate ordinate.

Ho scritto questo codice:
#include <stdio.h>
#include <stdlib.h>

typedef struct point {
	int x;
	int y;
}punto;

int conf (const void *a,const void *b){
	const punto **pa=(const punto **)a.x;
	const punto **pb=(const punto **)b.x;
	return *pa-*pb;
}

int main(){
	punto **a;
	int n,i;
	scanf("%d",&n);
	a=malloc(n*sizeof(int*));
	for (i=0;i<n;i++){
		a[i]=malloc(sizeof(punto));
		scanf("%d %d",&a[i].x, &a[i].y);
	}
	qsort(a,n,sizeof(punto),conf);
	for (i=0;i<n;i++){
		printf("%d %d\n",a[i].x, a[i].y);
	}
	return 0;
}
Il problema è che al momento della compilazione con gcc mi da una serie di errori tutti uguali dicendo
request for member 'y' in something not a structure or union
printf("%d %d\n",a.x, a.y);


e ovunque ci sia il parametro .x e .y
Ora non capisco bene che cosa mi sfugge qualcuno mi potrebbe aiutare?

2 Risposte

  • Re: Ordinare coordinate

    Probabilmente l'errore è perché dichiari a come doppio puntatore, quando in realtà è soltanto uno.
    prova a fare
    punto *a;
    int n;
    scanf("%d", &n);
    a = (punto*) malloc(n * sizeof(punto));
  • Re: Ordinare coordinate

    Eh si penso che sia per quello... non so perché perché la cosa delle coordinate mi ha fatto pensare ad una matrice invece che un array di struct...grazie mille
Devi accedere o registrarti per scrivere nel forum
2 risposte