Buenas, sabrían crear un función en C que dijera si una palabra es un anagrama?

Necesitaría una función que dijera si una palabra es un anagrama. Se denomina anagrama a una modificación en el orden de las letras que componen un vocablo, generando otra palabra diferente.

Por ejemplo, jamón y monja o gato y toga.

2 respuestas

Respuesta
1

Hace mucho que no programo en C y además nunca fui muy bueno, así que te digo como se me ocurre que deberías hacer:

Para empezar no es una palabra, sino que son 2 palabras las que deberías tener

Lo primero que se me ocurre es verificar que tenga la misma cantidad de caracteres (si son distintos no es anagrama)
Después deberías ir recorriendo una de estas palabras por caracter y buscar ese caracter en la otra palabra, si lo encuentra entonces lo 'sacás' y te quedás con el resto, si no lo encuentra termina (y no es anagrama)

Si llegás al final de la primer palabra y siempre encontró todo, entonces es anagrama

Espero te sirva aunque sea para pensar como sería la solución...

Salu2

Respuesta
1

Modifícalo para que valga para palabras que repitan letras.

public void Ana()

{
var[] tablapal = new var[100], tablapalcuenta = new var[100], tablapal2 = new var[100], tablapalcuenta2 = new var[100];
var pal, pal2, l;
int c, p, v;

pal = "gato";
pal2 = "toga";

for (var j = 1; j <= Strings.Len(pal); j++)
{
l = Strings.Mid(pal, j, 1);
tablapal[c] = l;
tablapalcuenta[c] = 1;
c = c + 1;
}
c = 0;
for (var j = 1; j <= Strings.Len(pal2); j++)
{
l = Strings.Mid(pal2, j, 1);
tablapal2[c] = l;
tablapalcuenta2[c] = 1;
c = c + 1;
}

for (j = 1; j <= Strings.Len(pal); j++)
{
l = tablapal2[j];
p = Array.IndexOf(tablapal, l);
if (p != -1)
v = v + 1;
}
if (v == Strings.Len(pal))
Interaction.MsgBox("Es anagrama");
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas