Invertir arreglo en C (ANSI C)

Resumen

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.

Arrays en C

Arreglo invertido usando ANSI 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.

Algoritmo para invertir un arreglo

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.

Código para invertir arreglo en C

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;
}

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *