Arreglo invertido usando ANSI C
Crear el código necesario en C para invertir un arreglo o array, usando ciclos y una variable temporal, sin usar arreglos extra.
Nota: en otro post te mostré cómo invertir una cadena en C.
Los arrays en C son de una longitud fija, y por lo tanto no podemos crear un arreglo en tiempo de ejecución y llenarlo con los otros datos (aunque se podría con una pila dinámica) pero podemos usar un ciclo for y una variable temporal.
Recorremos el arreglo desde 0 hasta la mitad de su longitud, declaramos una variable temporal fuera del ciclo, y también una que irá aumentando en cada iteración (el índice).
Después hacemos la asignación de:
temporal = arreglo[índice]
arreglo[índice] = arreglo[longitud - x - 1]
arreglo[longitud - x - 1] = temporal
Es decir, en la temporal guardamos el valor de la izquierda del arreglo, y en el extremo derecho guardamos lo que había en el izquierdo.
Estamos restando 1
a x
y a longitud
porque recuerda que los arreglos comienzan en 0, y que el último elemento está en longitud - 1
.
Después de haber explicado el algoritmo veamos el código que invierte un array en C:
/*
Invertir un arreglo en C (ANSI C)
https://parzibyte.me/blog
*/
#include <stdio.h>
int main(void) {
int numeros[] = {50, 44, 152, 12, 33};
// Necesitamos la longitud únicamente para hacer
// el ciclo. Si ya la conoces desde antes, ponla aquí
// directamente. Más info:
// https://parzibyte.me/blog/2018/09/21/longitud-de-un-arreglo-en-c/
int longitud = sizeof(numeros) / sizeof(numeros[0]);
printf("Imprimiendo arreglo ANTES de invertir\n");
for (int i = 0; i < longitud; i++) {
printf("%d,", numeros[i]);
}
// Para invertir recorremos hasta la mitad del arreglo
int temporal;
for (int x = 0; x < longitud / 2; x++) {
// Guardamos el valor de números en x
temporal = numeros[x];
// A números en x le asignamos lo que haya en la
// otra mitad, restando 1 porque recuerda que los índices
// comienzan en 0
numeros[x] = numeros[longitud - x - 1];
// Y a números en longitud - x - 1 le ponemos el temporal
numeros[longitud - x - 1] = temporal;
}
printf("\nImprimiendo arreglo DESPUÉS de invertir\n");
for (int i = 0; i < longitud; i++) {
printf("%d,", numeros[i]);
}
return 0;
}
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…
Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…
Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…
Esta web usa cookies.