Manejo de Caracteres en C
Posted on Sábado, abril 3rd, 2010 at 11:29TP2 para UP. Estructuras de datos y Algoritmos
Dejo ejemplificado el manejo de caracteres en C. Con un Trabajo Practico que tube que entregar en la facultad. Con los siguientes puntos:
1. Leer un texto carácter por carácter terminando en EOF. Contar cuántas veces aparecen dos letras iguales. Mostrarlas intercalándoles el signo “=”.
Ejemplo: “sooolo see que no see naaddaaa.”
En 8 oportunidades hay dos letras iguales juntas. “so=o=olo se=e que no se=e na=ad=da=a=a”
2. Ingrese un texto carácter a carácter terminado en EOF contar cuantas palabras tienen más de una vez repetida la primer letra de la primer palabra.
Ejemplo:
AYER ESTABA FEO PERO ANA FUE IGUALMENTE AL ALMACEN.
La cantidad de palabras que tienen más de una A es 3.
3. Leer un texto carácter por carácter terminando en EOF. Contar palabras de 5 letras que terminan en “ia”. Al final de cada una de esas palabras, insertar el número “5”.
Ejemplo: “María sabia que no le salía” => ”Maria5 sabia5 que no le salia5”
La cantidad de palabras terminadas en ia son: 3
Uso de putchar(); y getchar();
/* * TRABAJO PRACTICO N.2 * (caracteres) * Compilado con Codelite en Windows Seven */ /* * ACLARACION: * El ejercicio esta hecho con \n en lugar de EOF, para facilitar el desarrollo y el testeo. * * */ #include <stdio.h> #include <conio.h> #include <string.h> int main(int argc, char **argv) { char c,d,e; //primer ejercicio char ant = '\n'; int contIguales=0; //segundo ejercicio char prim; int contPal=0; int contPrim=0; //tercer ejercicio int cont=0; char anteult; char ult; int cont5=0; /******************************************************************************************* * 1. Leer un texto carácter por carácter terminando en EOF. (Lo intercambio por ENTER) * Contar cuántas veces aparecen dos letras iguales. * Mostrarlas intercalándoles el signo “=”. * ****************************************************************************************/ printf("Ingrese una frase para el primer ejercicio (contar parejas): "); do{ c = getchar(); if(ant==c){ contIguales++; putchar('='); } //Reescribo la frase. putchar(c); //Antes de volver a leer la guardo en anterior ant = c; }while( c != '\n'); printf("\n\n1) En %d oportunidades hay dos letras iguales juntas.",contIguales); /******************************************************************************************** * 2. Ingrese un texto carácter a carácter terminado en EOF contar cuantas palabras * tienen más de una vez repetida la primer letra de la primer palabra. * *****************************************************************************************/ printf("\n\n*****************************************************************************"); printf("\n\nIngrese una frase para el segundo ejercicio (contar primer letra): "); do{//Que la primera venga sin espacio d = getchar(); }while(d==' '); //La primer letra es: prim prim = d; //LECTURA CARACTER A CARACTER while(d!='\n'){ if(d!=' '){ //Control de primer letra if(d==prim) contPrim++; }else{ //si tiene mas de una vez la cuento if(contPrim>1){ contPal++; } contPrim=0; } //No reescribo la frase porque no hace falta modificarla //putchar(d); d = getchar(); } if(contPrim>1) contPal++; printf("\n\n 2) La cantidad de palabras que tienen mas de una %c es %d.",prim,contPal); /******************************************************************************************** * 3. Leer un texto carácter por carácter terminando en EOF. * Contar palabras de 5 letras que terminan en “ia”. * Al final de cada una de esas palabras, insertar el número “5”. *******************************************************************************************/ printf("\n\n****************************************************************************"); printf("\n\nIngrese una frase para el tercer ejercicio (ia): "); do{ e = getchar(); if(e==' ' || e=='\n'){ //cuento chars. if(cont==5 && (anteult=='i' || anteult=='I') && (ult=='a' || ult=='A')){ cont5++; putchar('5'); } cont=0; }else cont++; anteult = ult; ult=e; putchar(e); }while( e != '\n'); printf("\n\n 3) La cantidad de palabras terminadas en ia son: %d",cont5); //Cierro main. getch(); return 0; }


Leave a reply