Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created December 31, 2020 00:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/b41fc9de9a08b0a711e173e53707aaf2 to your computer and use it in GitHub Desktop.
Save parzibyte/b41fc9de9a08b0a711e173e53707aaf2 to your computer and use it in GitHub Desktop.
/*
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