Ordinare coordinate

di Anonimizzato16393 il
2 risposte
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

  • 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));
  • 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