Está en la página 1de 9

Ciclo II - 2014 1

Objetivo: Aprender a trabajar con cadenas de caracteres (string) y a manipular las funciones de
cadenas y numricas, contenidas en las libreras de cabecera que acompaan al compilador del
Lenguaje de Programacin C.

Contenido:
Parte I: Ejemplos de Soluciones a Problemas, utilizando Cadenas.
Parte II: Programas con Errores, para corregirlos.
Parte III: Ejercicios Propuestos.

Metodologa de Trabajo:
Semana 1:
Digitar, compilar, depurar y ejecutar los ejemplos de las Partes I y II.
De la Parte III, Ejercicios Propuestos, el instructor deber escoger 2 enunciados, para que el
estudiante ejercite el uso de Cadenas.
Semana 2:
De la Parte III, Ejercicios Propuestos, el instructor deber escoger 5 enunciados, para que el
estudiante ejercite las Funciones de Cadena y Numricas.

PARTE I. Aplicacin de Cadenas.

//Se lee una cadena de caracteres. Luego, se leen dos caracteres digitados por el usuario.
//Se sustituye el primer caracter ledo dentro de la cadena por el segundo.
//Guardarlo en USB como e1g3.cpp
#include <conio.h>
#include <stdio.h>
#include <string.h>
main() {
char cadena[150], c, r;
int i;
puts("Digite la cadena a trabajar: ");
gets(cadena);
puts("\nDigite el caracter que se va a reemplazar: ");
c=getche();
printf("\n\nDigite caracter de reemplazo: ");
r=getche();
for (i=0;i<=strlen(cadena);i++) {
if (c==cadena[i]) cadena[i]=r;
}
printf("\n\n La nueva cadena es:\n\t\t ");
puts(cadena);
getch();
return 0;
}

UNIVERSIDAD DE EL SALVADOR
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERA DE SISTEMAS INFORMATICOS
PROGRAMACION I Ciclo II 2014
Gua de Laboratorio Unidad III. Cadenas


Ciclo II - 2014 2


/*Lee dos palabras por separado y despliega la de menos caracteres en minusculas y en mayusculas la
mas larga; si las palabras son de la misma longitud solamente lo indica mediante el mensaje:
Las Cadenas son Iguales. Guardarlo en USB como e2g3.cp*/

#include <stdio.h>
#include <conio.h>
#include <string.h>

main()
{
char s1[30]="\0", s2[30]="\0";
int c1,c2;
fflush(stdin);
puts("digite la primera palabra");
gets(s1);
c1=strlen(s1);

puts("digite la segunda palabra");
gets(s2);
c2= strlen(s2);

if(c1>c2)
{
puts("la segunda es mas chica");
puts(strupr(s1));
puts(strlwr(s2));
}
else
{
if (c1<c2)
{
puts("la primera es mas chica");
puts(strupr(s2));
puts(strlwr(s1));
}
else
puts("son iguales");
}

getch();
return 0;
}










Ciclo II - 2014 3


Digitar y estudiar el cdigo siguiente. Guardarlo como: e3g3.cpp

#include <stdio.h> //printf
#include <conio.h> //getch
#include <math.h> //ceil, fabs, fmod, pow, exp, sqrt
#include <ctype.h> //isspace
#include <stdlib.h> //system
int main() {
double x = 6.54321;
double y = -6.54321;
double y1 = -6.54321;
double y2 = 1.23456;
double z = 0.56789;
double x1 = -5.567;
int a=5, b=3;
char cadena[] = ";0 sR\n(h &~?\177R\t 1/";
int i;
//entero mayor, el techo del numero
printf( "\nceil( %f ) = %f\n", x, ceil(x) );
getch();
//entero menor, el suelo del numero
printf( "\nfloor( %f ) = %f\n", x, floor(x) );
getch();
//valor absoluto
printf( "\nfabs( %f ) = %f\n", y, fabs(y) );
getch();
//residuo de y1 entre y2
printf( "\nfmod( %f/%f ) = %f\n", y1, y2, fmod(y1,y2) );
getch();
//residuo de a entre b
printf( "\nmod( %i/%i ) = %i\n", a, b, a%b );
getch();
//cociente de a entre b
printf( "\ndiv( %i/%i ) = %i\n", a, b, a/b );
getch();
//x elevado a la z
printf( "\npow( %f, %f ) = %f\n", x, z, pow(x,z) );
getch();
//e elevado a la x1
printf( "\nexp( %f ) = %f\n", x1, exp(x1) );
getch();
//raiz cuadrada de x
printf( "\nsqrt( %f ) = %f\n", x, sqrt(x) );
getch();
system("cls");
for(i = 0; cadena[i]; i++) {
printf("%c, %d\n", cadena[i], isspace(cadena[i]));
//retorna 0 si el caracter no es un espacio en blanco
getch();
}
getch();
return 0; }
Ciclo II - 2014 4


PARTE II. Corregir y ejecutar los siguientes cdigos en C.

// Compara dos palabras para indicar cual es la mas grande.
// Guardarlo en USB como e4g3.cpp

#include <stdio.h>
#include <conio.h>
#include <string.h>

main()
{
char s1[30]="\0", s2[30]="\0";
puts("digite la primera palabra");
gets(s1);

puts("digite la segunda palabra");
gets(s2);

c=strcmp(s1,s2);
printf("\n\n\n el resultado de la comparacin es:\t \n\n" c);

if(c>0)

puts("la segunda es mas chica")
puts(strurp(s1));
puts(strlwr(s2));

else
{
if (c<0)
{
put("la primera es mas chica");
puts(strlwr(s2));
puts(struper(s1));
}
else
puts(Los caracteres de las cadenas son iguales);
}

getch();
return 0;
}






Ciclo II - 2014 5


/*Lee diez nombres de frutas y despliega solo los que estan compuestos por
un maximo de 4 letras, reportando la cantidad de frutas seleccionadas.
Guardarlo en USB como e5g3.cpp */

#include <conio.h>
#include <stdio.h>
#include <string.h>

main()
{
char fruta[15];
int i, largo, cuenta;

for (i=0;i<=largo;i++)
{
printf("Digite Fruta %i: ", i);
largo = strlen(fruta);
if (longitud<=4)
{
cuenta++;
tolower(fruta[0]);
printf("Fruta Seleccionada: %s\n", fruta);
}
}
printf("\nLa cantidad de frutas seleccionadas fue: %i", cuenta);
getch();
return 0;
}


Completar el siguiente cdigo en C: Guardarlo en USB, como e6g3.cpp

#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>

int main() {
int c, opcion=10; float a,b;
while(opcion!= 0) {
system("cls");
printf("MENU PRINCIPAL SUPERCALCULADORA\n");
printf("1. Seno\n");
printf("2. Coseno\n");
printf("3. Tangente\n");
Ciclo II - 2014 6


printf("4. Logaritmo Natural\n"); //funcin log()
printf("5. e elevado a una potencia n\n"); //funcin exp()
printf("6. Base elevada a un exponente"); //funcin pow()
printf("7. Valor Absoluto\n");
printf("8. Logaritmo neperiano de un numero\n");
printf("9. Raiz Cuadrada\n");
printf("0. Salir\n");
printf("Seleccione Opcion\n");
scanf("%d",&opcion);
switch(opcion) {
case 1: printf("Digitar un numero real\n");
scanf("%f",&a);
break;
case 2: printf("Digitar un numero real\n");
scanf("%f",&a);
break;
//completar aqui los casos que faltan
case 7: printf("Digitar un numero entero \n");
scanf("%d ",&c);
break;
}
switch(opcion) {
case 1: printf("El seno de %f es %f\n",a,sin(a));
break;
case 2: printf("El coseno de %f es %f\n",a,cos(a));
break;
case 3: printf("La tangente de %f es %f\n",a,tan(a));
break;
case 4: //completar
break;
case 5: //completar
break;
}
getch();
}
printf("Gracias por usar nuestra calculadora\n");
printf("\n\n\n");
system("pause");
return 0;
}


Ciclo II - 2014 7


PARTE III. Resolver los siguientes ejercicios, haciendo uso de funciones numricas y de cadenas.
Guardar los archivos de las soluciones en su USB de la siguiente manera: g3p1.cpp, en el caso de que
se trate del primer problema y as sucesivamente.

1. Escribir una solucin que lea una frase del teclado y que despliegue el nmero de palabras que
contiene la frase.

2. Disee un programa que lea el nombre completo de una persona (dos nombres y dos apellidos.
Debe de imprimirse solamente el primer apellido.

3. Disear un programa que lea una cadena y la convierta a una cadena en slo maysculas, se
debe imprimir la original (leda) y la cambiada. En otra cadena diferente se debe dejar la cadena
leda solo en minsculas.

4. Disee un programa que convierta una cadena a un valor entero, como primer paso valide por
medio de las funciones de clasificacin si la cadena solo posee nmeros.

5. Escriba una solucin que lea la cadena Compro, la cadena Vendo y la cadena y Reparo
Computadoras; luego que despliegue las cadenas:

Compro, Vendo y Reparo Computadoras
Vendo y Reparo Computadoras
Reparo, Compro y Vendo Computadoras

6. Disear una solucin que reporte si una cadena es un palndromo. Una cadena es un palndromo
si se lee igual de izquierda a derecha que de derecha a izquierda.

7. Escribir una solucin que dada una cadena de caracteres y un entero correspondiente a una
posicin vlida dentro de ella, genere una nueva cadena de caracteres que contenga todos los
caracteres a la izquierda de dicha posicin, pero en orden inverso.

8. Escribir una solucin que lea una frase y que muestre en una columna cada palabra de la frase
seguida del nmero de letras que la componen.

9. Escribir una solucin que lea una frase (teclear cada palabra con separaciones mayores a un
espacio entre cada una de ellas), sustituir todas las secuencias de dos o ms espacios por un
solo espacio y mostrar la frase obtenida.

10. La clave murcilago consiste en colocar 1 cada vez que se encuentre la vocal a, 2 en vez de
e, 3 en lugar de i, 4 por o y 5 cada vez que aparezca la u en una palabra. De manera que:
aurora se escribira como: 15r4r1. Disear un programa que leyendo una palabra utilice la clave
murcilago para luego desplegarla en forma codificada o encriptada.

Ciclo II - 2014 8


11. Elabore una solucin que cuente la frecuencia con la que aparecen el, la, de en cierta frase
dada. Por ejemplo: La UES es la mejor Universidad de El Salvador. Debe desplegar:

el: 0 la: 2 de: 1

12. Leer 10 palabras desde el teclado y desplegar todas aquellas que comiencen con la raz: pre.
En caso que ninguna cumpla la condicin, notificar al usuario.

13. Dado el nombre propio de una persona, compuesto de dos nombres y dos apellidos (por ejemplo:
JUAN ANTONIO PEREZ GODOY) ledo en una sola cadena de caracteres; disee un programa
que divida la cadena en 4 sub-cadenas diferentes, una para cada parte del nombre: nombre1
(JUAN), nombre2 (ANTONIO), apellido1 (PEREZ), apellido2 (GODOY), utilizando la
funcin isspace. Se debe imprimir el nombre completo y sus cuatro partes.


14. Dada una cadena de caracteres se necesita ver impresas solo las letras que no son vocales.
Disee un programa que imprima la cadena original y la modificada.

15. Disee un programa que lea una cadena solo con letras minsculas, se debe verificar que sean
minsculas. Se debe imprimir la cadena leda, y la misma pero, sustituyendo los signos de
puntuacin (, : ; .) por el caracter: ~.

16. Disee un programa que, de una cadena ingresada por el usuario, imprima el nmero de:
Letras maysculas, Letras minsculas, Punto y comas (;) y al final debe imprimirse cada
carcter que forma la cadena y su correspondiente cdigo ASCII

17. Necesitamos un programa que lea una cadena de caracteres, y la convierta a nmero real, para
lo cual se debe verificar que la cadena se pueda convertir a un valor numrico. Imprima la
cadena inicial y el valor numrico resultante.

18. Disee un programa que simule una calculadora bsica (+,-,*,/) utilizando las funciones atof y
atoi, es decir los nmeros que se utilicen como datos deben ser declarados como cadenas.

19. Disee un programa que lea una cadena de caracteres y la imprima como dato original, luego
debe de formarse una nueva cadena solamente con las consonantes que tengan un cdigo ascii
impar en letras minsculas; y, una tercera cadena con las consonantes de cdigo ASCII par en
maysculas.

Ciclo II - 2014 9


20. Disee un programa que lea dos cadenas. Se debe imprimir ambas cadenas, y un mensaje
adecuado segn resulte de su comparacin; por ejemplo cadenas iguales o cadena1 mayor
cadena1 menor. Realice la comparacin de las cadenas sin las funciones de string.h

21. Dado el nombre completo de una persona, generar el carnet con el siguiente formato:
a. Las dos primeras letras corresponden a las iniciales del primer y segundo apellido, en
caso de poseer un apellido la letra del primer apellido se repetir.
b. Concatenarle a esto un nmero correlativo de 5 cifras, es decir 12001 para el primer
carnet generado, 12002 para el segundo etc.

22. Escribir una funcin "reemplazar", la cual toma una cadena como parmetro, le reemplaza todos
los espacios de la cadena por un guin bajo, y devuelve el nmero de espacios reemplazados.
Por ejemplo: El gato negro, devolvera: El_gato_negro con numEspacios=2.

23. Escribir un programa que lea una lnea de texto desde el teclado, usando la funcin gets y calcule
la longitud de la lnea (NO usar la funcin strlen()).

24. Desarrolle un programa que implemente un subprograma que realice la conversin de
coordenadas polares a coordenadass cartesianas. x = r.cos(J) y = r.sen(J).

25. El nmero de combinaciones de m elementos tomados de n en n es: m! / n!(m-n)! Crear un
programa que permita calcular el nmero combinatorio utilizando funciones.

26. Desarrolle un programa en el que sea posible leer tan slo caracteres alfabticos, mientras no se
digite el caracter . y reemplace a cada uno de ellos por su complementario, ya sea maysculo a
minsculo. En el caso de leer la a, se imprimir A.

27. Desarrolle un programa que implemente una funcin que calcule el MCD de cinco nmeros
enteros no primos.

28. Desarrolle un programa que implemente una funcin que acepte un nmero de mes, un nmero
de da y un nmero de ao y los visualice en el formato: aaaa/mm/dd siempre y cuando la fecha
est correcta (mayor o igual a la fecha de hoy).

29. Desarrolle un programa que implemente una funcin que reciba dos nmeros enteros como
parmetros y devuelva como resultado los nmeros pero simplificados. Por ejemplo, si se pasa
el 5 y el 10, la funcin debe devolver 1 y 2.

30. Desarrolle un programa que simule el lanzamiento de los dados, suponga que existen dos
competidores, cada uno de ellos lanzar sus dados y finalizar el juego cuando alguno de ellos
haya completado 50 puntos. Consultar funciones primitivas para el manejo y generacin de (rand
o random) en un rango determinado.

También podría gustarte