-
-
Save parzibyte/b41fc9de9a08b0a711e173e53707aaf2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
https://parzibyte.me/blog | |
*/ | |
#include <stdio.h> | |
#include <string.h> // strncpy | |
#define MAXIMA_LONGITUD_CADENA 50 | |
#define CANTIDAD_PERSONAS 2 | |
struct persona | |
{ | |
char nombre[MAXIMA_LONGITUD_CADENA]; | |
int edad; | |
double altura; | |
}; | |
struct persona personas[CANTIDAD_PERSONAS]; | |
struct persona temporal; | |
void ordenarArreglo() | |
{ | |
int x; | |
for (x = 0; x < CANTIDAD_PERSONAS; x++) | |
{ | |
int indiceActual; | |
for (indiceActual = 0; indiceActual < CANTIDAD_PERSONAS - 1; | |
indiceActual++) | |
{ | |
int indiceSiguienteElemento = indiceActual + 1; | |
// Ordenar por altura, de manera descendente | |
if (personas[indiceActual].altura < personas[indiceSiguienteElemento].altura) | |
{ | |
// Intercambiar | |
memcpy(&temporal, &personas[indiceActual], sizeof(struct persona)); | |
memcpy(&personas[indiceActual], &personas[indiceSiguienteElemento], sizeof(struct persona)); | |
memcpy(&personas[indiceSiguienteElemento], &temporal, sizeof(struct persona)); | |
} | |
} | |
} | |
} | |
int main(void) | |
{ | |
// Asignar datos | |
personas[0].altura = 1.2; | |
personas[0].edad = 20; | |
strncpy(personas[0].nombre, "Luis Cabrera Benito", MAXIMA_LONGITUD_CADENA); | |
personas[1].altura = 2.1; | |
personas[1].edad = 30; | |
strncpy(personas[1].nombre, "Leon Scott Kennedy", MAXIMA_LONGITUD_CADENA); | |
// Recorrer antes de ordenar | |
printf("Antes de ordenar\n"); | |
int i; | |
for (i = 0; i < CANTIDAD_PERSONAS; i++) | |
{ | |
struct persona personaActual = personas[i]; | |
printf("Nombre: %s. Edad: %d. Altura: %lf\n", personaActual.nombre, personaActual.edad, personaActual.altura); | |
} | |
ordenarArreglo(); | |
// Recorrer después | |
printf("Después de ordenar\n"); | |
for (i = 0; i < CANTIDAD_PERSONAS; i++) | |
{ | |
struct persona personaActual = personas[i]; | |
printf("Nombre: %s. Edad: %d. Altura: %lf\n", personaActual.nombre, personaActual.edad, personaActual.altura); | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment