Solución a la Tarea 5: Inversiones e Intercalaciones

A continuación muestro un programa que resuelve el problema propuesto. Siguiendo la sugerencia, escribí una función inversion y una función intercalacion que hacen todo el trabajo. Observe que ambas funciones terminan poniendo un '\0' al final de t para señalar el fin de la cadena. Note el uso de la coma en dos lugares de la función intercalacion. Finalmente, observe que sólo uno de los ciclos while de esa función debería hacer algo, ¿porqué?

#include <stdio.h>
#include <string.h>

void inversion(char s[], char t[])
{
  int i, l;

  l = strlen(s);
  for (i = 0; i < l; i++)
    t[i] = s[l-i-1];
  t[l] = '\0';
}

void intercalacion(char r[], char s[], char t[])
{
  int i, j;

  for (i = j = 0; r[i] && s[i]; i++, j += 2)
    t[j] = r[i], t[j+1] = s[i];
  if (r[i]) {
    while (r[i])
      t[j++] = r[i++];
  } else {
    while (s[i])
      t[j++] = s[i++];
  }
  t[j] = '\0';
}

int main(void)
{
  char a[100], b[100], ai[100], bi[100];
  char ab[200], ba[200], aa[200], bb[200];

  gets(a);
  gets(b);
  inversion(a, ai);
  inversion(b, bi);
  intercalacion(a, b, ab);
  intercalacion(b, a, ba);
  intercalacion(a, ai, aa);
  intercalacion(b, bi, bb);
  printf("%s\n%s\n%s\n%s\n%s\n%s\n", ai, bi, ab, ba, aa, bb);
  return 0;
}

Los valores de entrada y salida (sólo 5 esta vez, para 3 puntos cada uno) empleados para la evaluación fueron los siguientes:

Entrada      Salida
casa         asac
azul         luza
             caazsual
             aczausla
             caassaac
             alzuuzla

Entrada      Salida
hola         aloh
adios        soida
             haodliaos
             ahdoiloas
             haolloah
             asdoiiodsa

Entrada      Salida
do re mi     im er od
tres         sert
             dtor erse mi
             tdroe sre mi
             diom  reer  moid
             tsreerst

Entrada      Salida
pruebas      sabeurp
malas        salam
             pmrauleabsas
             mparluaesbas
             psraubeebuarsp
             msaallaasm

Entrada      Salida
tarea cinco  ocnic aerat
programacion noicamargorp
             tparroegar acmianccioon
             ptraorgeraa mcaicnicoon
             toacrneiac  caienrcaot
             pnrooigcraammaarcgioornp