Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/04/2005, 07:48
rir3760
 
Fecha de Ingreso: diciembre-2002
Mensajes: 23
Antigüedad: 22 años, 2 meses
Puntos: 0
En tu programa asumes que cada palabra del diccionario termina con el caracter ',' lo que es correcto en todos los casos con excepcion de la ultima palabra que (obviamente) termina con el caracter '\0'. Es por eso que tu programa genera un error en tiempo de ejecucion.

En la funcion 'comparac' estas incrementando dos veces la variable 'i':
Código:
while (i < N) {
   if ((diccionario[j] != ',') && (cadena[i] != '\0')) {
      j++;
      i++;
   }
   i++;
}
Cuando deberia ser:
Código:
while (diccionario[j] != ',' && diccionario[j] != '\0' && cadena[i] != '\0'){
   j++;
   i++;
}
if ((diccionario [j] == ',' || diccionario [j] == '\0') && cadena[i] == '\0')
   return 1; //la cantidad de letras es igual en ambos
else
   return 0; //la cantidad de letras es distinta en ambos
Tambien habria que clarificar la funcion 'sacar_en' ya que esta solo elimina (si lo hubiera) el caracter '\n' al final de la cadena mientras que el comentario indica otra cosa (eliminacion de ' ' y '\n').

Tal vez haya (o no) otros errores en tu programa pero solo lo revise de forma superficial.

Por cierto una forma de verificar si dos cadenas estan formadas por los mismos caracteres (incluyendo las repeticiones) pero con un orden distinto es simplemente ordenar ambas cadenas y compararlas utilizando la funcion strcmp.

Un saludo