martes

Uso de cadenas para C I

Hacía tiempo que quería publicar un par de practicas de mi materia de teoría computacional por ser cosas muy simples y bastante útiles para aprender a tratar las cadenas.
El siguiente programa recibe una cadena que analizaremos, obteniendo su longitud (con espacios), la cantidad de espacios, la cantidad de palabras, número de consonantes y número de vocales. Cabe señalar que lo hize en windows 7 sin embargo, ademas de la llamada a sistema para pausar el programa y el uso de la librería stdlib.h no debería haber mas problemas para ejecutarlo en cualquier otro sistema.

#include
#include
main(){
char caracter='d',oracion[100];
int n=0,espacios=0,palabras=1,vocal=0,consonante=0,contador=0;
printf("proporcione la oracion: \n");
while(caracter!='\n'){
scanf("%c",&caracter);
oracion[n]=caracter;
contador++;
if(caracter>=-92&&caracter<=-91){//exepcion para Ñ consonante++;} if(caracter!=' '){//anidando if para tener justo lo que quiero para 
if((caracter>=65&&caracter<=90)||(caracter>=97&&caracter<=122)){//delimitar caracteres
if(caracter=='a'||caracter=='e'||caracter=='i'||caracter=='o'||caracter=='u'||caracter=='A'||caracter=='E'||caracter=='I'||caracter=='O'||caracter=='U')//han de disculpar la falta de orden de este if, pero funciona igual si isan ASCII 
vocal++;//contar vocales
else consonante++;//contar consonantes
}}
else{
espacios++;//contar espacios
if(oracion[n-1]!=' '||oracion[n]=='\n')//para contar palabras
palabras++;
}
n++;}
printf("Numero de espacio: %d\nNumero de vocales: %d\nNumero de consonantes: %d\nNumero de palabras: %d\n",espacios,vocal,consonante,palabras);
printf("Su longitud es: %d\n",contador-1);
system("pause");}

Han de diculpar lo horible que se ve el código pero no me he dado a la tarea de investigar alguna forma de indentarlo y hacer un resaltado de sintaxis mas elegante.

En cuanto al funcionamiento no hay mucho que decir. Es una suerte de if's anidados que inspeccionan carácter por carácter el tipo de símbolo. Existe una función en la librería string.h que devuelve 0 o 1 (false o true respectivamente) que valida si es un caracter, aquí se hace lo mismo buscando que el valor de caracter se encuentre entre los intervalos del abcedario en ASCII (para mayúsculas y minúsculas) colocando antes la excepción para la letra ñ .Luego, solo buscamos que sea un vocl para sumar uno a nuestra variable vocal y en caso negativo, será obligatoriamente una consonante.
De igual manera se hace para los espacios, se compara a caracter con espacio o lo que es lo mismo ' '.

Para contar palabras no es un proceso muy diferente al resto, solo se debe tener cierta lógica, pues cada que la cadena oracion se lea y se encuentre un espacio o un fin de linea y si antes de ese caracter hay una letra del alfabeto, seguramente se trata de una palabra.


Ahi tienen una forma de aprender a usar strings en C, ademas de ser bastante sencillo pasarlo a cualquier otro lenguaje pues no se usan funciones de libreria. Cualquier duda o comentario es bienvenido.

2 comentarios:

  1. Un consejo: No vuelvas a subir tus tareas...en serio, y lo digo en buen pedo...

    ResponderEliminar
  2. Vale tío que si un día te das a la tarea de buscar ejemplos prácticos de programación verás lo mucho que ayudan estas cosas, y si no te late no sé porque las lees

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...