Destacar que solo hay que mirar a partir de la posición 6 (es porque es para usar en un programa donde el formato de las cadenas será ese).
El codigo es el siguiente:
Código C:
Ver original
#include <stdio.h> float comparar(char * uno, char * dos); main() { float resultado; resultado=comparar("45645;HOLA ","45645;HOLA "); } float comparar(char uno[35], char dos[35]) { int i; int j; char original[35]; for (i=0;i<35;i++)original[i]=uno[i]; char segunda [35]; for (i=0;i<35;i++)segunda[i]=dos[i]; i=6; j=6; int iguales; iguales=0; while((original[i]<='Z')&&(original[i]>='A')&&(segunda[j]<='Z')&&(segunda[j]>='A')) { if (original[i]==segunda[j]) iguales++; j++; i++; } while((original[i]<='Z')&&(original[i]>='A')) i++; while((segunda[j]<='Z')&&(segunda[j]>='A')) j++; float resultado; if (j<i) resultado=(iguales/(j-6)); else resultado=(iguales/(i-6)); return resultado; }
Ahora mismo ya le paso yo esas cadenas porque me interesa.
Lo curioso es que el printf de dentro visualiza un uno, ya que son exactamente los mismos caracteres, pero en la funcion main, no tiene el 1 ese, tiene un valor aleatorio, o sea, diferente cada vez que lo ejecuto.
Otra cosa curiosa, es que si llamo a la funcion comparar así resultado=comparar("45645;HOLA ","45645;HHLA ");, se supone que debería devolver 3/(10-6), dentro de la funcion no imprime eso, imprime otro valor, cuando los tiene bien almacenados.
Podeis seguir lo que hace con los printf, es bastante sencillo pero no entiendo el problema.