voglio ordinare una matrice di strutture utilizzando l'algoritmo di ordinamento bolla e puntatori in C. Ho una struttura auto:Bubble tipo di strutture con puntatori in C
typedef struct{
char model[30];
int hp;
int price;
}cars;
e allocare memoria per 12 articoli :
cars *pointer = (cars*)malloc(12*sizeof(cars));
e leggere dati da file:
for (i = 0; i <number ; i++) {
fscanf(file, "%s %i %i\n", (pointer+i)->model, &(pointer+i)->hp, &(pointer+i)->price);
}
mi passano puntatore 012.-bubbleSort
funzione:
bubbleSort(pointer, number);
Ecco il mio bubbleSort
funzione:
void bubbleSort(cars *x, int size) {
int i, j;
for (i=0;i<size-1;i++) {
int swapped = 0;
for (j = 0; j < size - 1 - i; j++) {
if ((x+i)->hp > (x+j+1)->hp) {
cars *temp = (x+j+1);
x[j+1] = x[j];
x[j] = *temp;
swapped = 1;
}
}
if (!swapped) {
//return;
}
}
}
Il problema è che non so come scambiare oggetti con i puntatori.
provare 'auto * temp = (x + j + 1);' 'modifica auto temp = x [j + 1];' ..'x [j] = temp; ' – BLUEPIXY
anche' if ((x + i) -> hp> (x + j + 1) -> hp) {'->' if ((x + j) -> hp> (x + j +1) -> hp) {' – BLUEPIXY
Non è mai necessario digitare cast il ritorno di malloc. Questa è una cosa C++. Basta usare 'cars * pointer = malloc (12 * sizeof (macchine));' – Deanie