Asignatura: Fundamentos de Informática | ![]() |
![]() |
Especialidad: Electrónica - UPV/EHU | ||
Curso académico: 2013-2014 | ||
Profesor: Ismael Etxeberria Agiriano |
Escribe un programa C que pida una frase y la convierta a "lenguaje de mensajes SMS", escribiéndola a continuación en pantalla.
Las normas para convertir la frase a SMS son las siguientes:
Se supone que la frase inicial está en minúsculas y que puede contener un máximo de 255 caracteres.
Ejemplo: Si la frase inicial leída es cad1:
La cadena con el resultado del mensaje SMS cad2 será:
Nota: los puntos suspensivos posteriores al terminador de la cadena indican que el contenido es indiferente.
Ejemplo de ejecución:
Dime una frase: quedamos a las 3 y paso por tu casa para ver la peli Mensaje SMS: kdams a las 3 y pas x t casa xa vr la pl
Nota: el texto subrayado del ejemplo es el introducido por teclado.
Una posible resolución de este ejercicio se proporciona a continuación:
/* 13-000.c */ #include <stdio.h> int EsVocal (int car); void main (void) { char fra[256]; char sms[256]; int i, j; printf ("Introduce la frase: "); gets (fra); for (i = j = 0; fra [i] != '\0'; i++) { if (fra[i] == 'q' && fra[i+1] == 'u') { sms[j++] = 'k'; i++; /* Adelantamos la 'u' ya leía */ } else if (fra[i] == 'p' && (fra[i+1] == 'o' || fra[i+1] == 'a') && fra[i+2] == 'r') { sms[j++] = 'x'; i += 2; /* Adelantamos "or" o "ar" ya leídos */ } else if (!EsVocal (fra[i]) || fra[i] == 'a') sms[j++] = fra[i]; /* Si no ignoramos el carácter, es decir, no lo compiamos */ } sms[j] = '\0'; printf ("Frase: [%s]\nSms: [%s]\n", fra, sms); } int EsVocal (int car) { return car == 'a' || car == 'e' || car == 'i' || car == 'o' || car == 'u'; }