[ Foro de C ]

Alguien me puede explicar este codigo

15-Oct-2023 23:22
Invitado (Antonio)
1 Respuestas

#include <stdio.h>

int diferencia(char a, char b) {
   if ( !((a>='A' && a<='Z') || (a>='a' && a<='z')) )
       return -1;
   
   if ( !((b>='A' && b<='Z') || (b>='a' && b<='z')) )
       return -1;
   
   if (a>'Z')
       a -= 'a'-'A';
   if (b>'Z')
       b -= 'a'-'A';
   
   if (a>b)
       return a-b;
   else
       return b-a;

}

int main() {
   char letra1, letra2;
   int dif;
   
   do {        
       printf("Introduce una letra del abecedario en mayúsculas o minúsculas (excepto la ñ): ");
       scanf("\n%c", &letra1);
   
       printf("Introduce otra letra del abecedario en mayúsculas o minúsculas (excepto la ñ): ");
       scanf("\n%c", &letra2);
       
       dif = diferencia(letra1, letra2);
       
       if (dif == -1)
           printf("Error, solo puedes introducir letras del abecedario.\n");
       else if (dif == 1)
           printf("La diferencia entre la %c y la %c es de un carácter.", letra1, letra2);
       else
           printf("La diferencia entre la %c y la %c es de %d caracteres.", letra1, letra2, dif);
   
   } while (dif == -1);
   
   return 0;
}


30-Nov-2023 00:46
Invitado (ram?n)

hola antonio

el programa compara dos caracteres y dice cual es la separación que hay entre ellos en el abecdario

esto lo hace con la función diferencia, que primero mira que esté dentro de los limintes del las letras, si hay mayúsculas las pasa a minúscula y saca la diferéncia usando los valores ascii de las letras

saludos ;-)






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)