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