Manejo de Caracteres en C

Posted on Sábado, abril 3rd, 2010 at 11:29

TP2 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;
}
You can leave a response, or trackback from your own site.

Leave a reply

Name (*)
Mail (will not be published) (*)
URI
Comment