Sei sulla pagina 1di 5

Universidad Nacional Autónoma de Honduras

Departamento de matemática aplicada


Programación I (MM-314)
Guía de ejercicios tercer parcial

agosto de 2018

Instrucciones: La tarea correspondiente al segundo parcial consiste en entregar en hojas


tamaño carta los problemas de multiplicidad 2 de cada sección. Para ello se tomará en cuenta
el orden y la limpieza con la que trabaje, además debe usar los dos lados de la hoja y no colocar
hojas en blanco sin contenido; de no seguir estas instrucciones el profesor tendrá la facultad de
bajarle puntos.

§Punteros
1. Lea el siguiente código y muestre cual es el valor de cada variable.

1 i nt a [ 6 ] = { 2 2 , 3 3 , 4 4 , 5 5 , 6 6 , 7 7 } ; 6 i nt ∗q=&a [ 5 ] ;
2 i nt ∗p=&a [ 3 ] ; 7 ∗(−−q ) =88;
3 i nt n=∗p ; 8 p−=3;
4 ++(∗p ) ; 9 n=q−p ;
5 ++p ;

2. ¿Cuál es la salida del siguiente fragmento de programa?

1 i nt a [ 1 0 ] ; 5 a [ i ]= i ;
2 i nt ∗p=a ; 6 for ( i =0; i <10; i ++)
3 i nt i ; 7 cout<<p [ i ]<< " " ;
4 for ( i =0; i <10; i ++) 8 cout<<e n d l ;

3. Escriba una función llamada promedio está deberá retornar el valor promedio de un
arreglo de números reales, en adición deberá almacenar en una variable entera n el número
de elementos dentro del arreglo que sean más grande que el promedio calculado. La
función deberá tener el siguiente prototipo:

double promedio(double A[ ], int *n)

4. Realice una prueba de escrito para el siguiente programa.

1
1 #include<i o s t r e a m> 13 cout<<C2<<e n d l ;
2 #include<c s t r i n g > 14 return 0 ;
3 #include<cctype > 15 }
4 using namespace s t d ; 16 void Funcion ( char ∗ ptr 1 , char ∗ p t r 2 ) {
5 void Funcion ( char ∗ , char ∗ ) ; 17 i nt n=s t r l e n ( p t r 1 ) ;
6 i nt main ( ) { 18 i nt j =0;
7 char C1 [ 1 0 0 ] = " F e l i z Navidad ! ! " ; 19 for ( i nt i=n−1; i >=0; i −−){
8 char C2 [ 1 0 0 ] ; 20 ∗ ( p t r 2+i ) =∗( p t r 1+j ) ;
9 s t r c p y ( C2 , C1 ) ; 21 j ++;
10 cout<<C2<<endl<<e n d l ; 22 }
11 Funcion ( C1 , C2 ) ; 23 }
12 cout<<C1<<e n d l ;

5. Determine la salida en pantalla del siguiente programa haciendo una prueba de escritorio.

1 #include<i o s t r e a m> 16 cout<<endl<<e n d l ;


2 #include<c s t r i n g > 17 for ( i =0; i <4; i ++)
3 #include<iomanip> 18 cout<<setw ( 3 ) <<∗(A+i ) ;
4 using namespace s t d ; 19 return 0 ; }
5 void F1 ( i nt ∗ ) ; 20 void F1 ( i nt ∗ p t r 2 ) {
6 i nt main ( ) { 21 i nt k ,T ;
7 i nt i ; 22 for ( k=0;k<2;k++){
8 i nt A[ 4 ] = { 2 , 5 , 3 , 8 } ; 23 i f ( ∗ p t r 2 > ∗ ( p t r 2 +1) ) {
9 i nt ∗ p t r 1=A; 24 T=∗p t r 2 ;
10 cout<<" Antes : "<<endl<<e n d l ; 25 ∗ p t r 2 =∗( p t r 2 +1) ;
11 for ( i =0; i <4; i ++) 26 ∗ ( p t r 2 +1)=T;
12 cout<<setw ( 3 )<<p t r 1 [ i ] ; 27 }
13 F1 (A) ; 28 p t r 2 ++;
14 cout<<endl<<e n d l ; 29 }
15 cout<<" Despues : " ; 30 }

6. Realice una prueba de escritorio para el siguiente programa, muestre cual es la salida en
pantalla.

1 #include<i o s t r e a m> 8 char ∗apA=&A[ N− 1 ] ;


2 #include<s t r i n g . h> 9 for ( i nt i =0; i <N; i ++){
3 using namespace s t d ; 10 B[ i ]=∗apA ;
4 i nt main ( ) { 11 apA=apA−1;}
5 char A[ 3 0 ] = " Hola amigo " ; 12 B[ s t r l e n (A) ]= ’ \0 ’ ;
6 char B [ 3 0 ] ; 13 cout<<B<<e n d l ;
7 i nt N=s t r l e n (A) ; 14 return 0 ; }

7. Realice una prueba de escritorio para el siguiente programa:

1 i nt main ( ) { 10 temp = ∗ p t r ;
2 char b l o c k s [ 3 ] = { ’A ’ , ’B ’ , ’C ’ } ; 11 temp = ∗ ( p t r + 1 ) ;
3 char ∗ p t r = &b l o c k s [ 0 ] ; 12 ptr = blocks ;
4 char temp ; 13 temp = ∗++p t r ;
5 temp = b l o c k s [ 0 ] ; 14 temp = ++∗p t r ;
6 temp = ∗ ( b l o c k s + 2 ) ; 15 temp = ∗ p t r ++;
7 temp = ∗ ( p t r + 1 ) ; 16 temp = ∗ p t r ;
8 temp = ∗ p t r ; 17 return 0 ; }
9 ptr = blocks + 1;

§Cadenas
1. Escribir un programa que lea una línea de texto y escriba en pantalla el número de
palabras que esta contiene, esto sin utilizar las funciones de string y particularmente sin
usar strtok( ).

2
2. Un sistema de encriptación simple consiste en sustituir cada carácter de un mensaje por
el carácter que está situado a tres posiciones alfabéticas por delante suyo. Escribir una
función que tome como parámetro una cadena y guarde en esta misma la cadena cifrada.

3. Escribir una función que reciba como parámetro una cadena e indique el número de letras
mayúsculas que tiene.

4. Escriba una función CambiaP alabra que busque una palabra determinada en un párrafo
y a continuación la cambie por cualquier palabra dada. La función entonces recibirá tres
cadenas, un párrafo y dos palabras. Considere el siguiente ejemplo, P arraf o="Quizá el
más famoso de todos los esquemas de codificación es el código Morse, desarrollado por
Samuel Morse en 1832 para usarlo con el sistema telegráfico.". Entonces si llamamos a
la función CambiaP alabra(P arraf o, ”Morse”, ”P erez”) entonces el párrafo modificado
será: "Quizá el más famoso de todos los esquemas de codificación es el código Perez,
desarrollado por Samuel Perez en 1832 para usarlo con el sistema telegráfico."

5. Escriba una función tipo bool que determine cuando dos cadenas introducidas por teclado
son anagramas. Se considera que dos cadenas son anagramas si contienen exactamente
los mismos caracteres en el mismo o en diferente orden. Hay que ignorarlos blancos y
considerar que las mayúsculas y las minúsculas son iguales.

6. (Código Morse) Quizá el más famoso de todos los esquemas de codificación es el código
Morse, desarrollado por Samuel Morse en 1832 para usarlo con el sistema telegráfico. El
código Morse asigna una serie de puntos y guiones a cada letra del alfabeto, cada dígito
y algunos caracteres especiales (tales como el punto, la coma, los dos puntos y el punto
y coma). En los sistemas orientados a sonidos, el punto representa un sonido corto y el
guión representa un sonido largo. Otras representaciones de puntos y guiones se utilizan
en sistemas orientados a luces y sistemas de señalización con banderas.
La separación entre palabras se indica mediante un espacio o, simplemente, con la ausencia
de un punto o un guión. En un sistema orientado a sonidos, un espacio se indica por un
tiempo breve durante el cual no se transmite sonido alguno. La versión internacional del
código Morse aparece en la tabla de abajo.
Escriba una función que reciba la cadena f rase y que codifique f rase en clave Morse en
otra cadena con nombre f raseMorse. Use un espacio en blanco entre cada letra en clave
Morse y tres espacios en blanco entre cada palabra en clave Morse.

Carácter Código Carácter Código Carácter Código Carácter Código


A .− B −... C −. − . D −..
E . F .. − . G −−. H ....
I .. J . − −− K −.− L . − ..
M −− N −. O −−− P . − −.
Q − − .− R .−. S ... T −
U ..− V ...− W .−− X −..−
Y −. − − Z − − .. 1 .−−−− 2 ... − −−
3 ... − − 4 ....− 5 ..... 6 −....
7 − − ... 8 − − −.. 9 −−−−. 0 −−−−−

7. En la biblioteca cctype podemos encontrar la función islower la cual recibe el código de


la tabla ASCII de un caracter y devuelve verdadero si este es una letra minúscula y falso
en caso contrario. Implemente una función que reciba una cadena y cuente el número de
letras minúsculas.

8. Implemente una función llamada contenido que determine cuando una cadena se encuen-
tra dentro de otra.

3
9. Escribe un programa en C que, al recibir como dato una cadena de caracteres cuya
longitud máxima sea 30, complete dicha cadena con el caracter "-" si la cadena no alcanza
el máximo correspondiente.

10. Escribe un programa en C que, al recibir como dato una cadena de caracteres, imprima la
cadena en forma inversa. Por ejemplo, si la cadena es la siguiente: "mundo del economía
novena la es México" el programa debe imprimirla de esta forma: "México es la novena
economía del mundo".

11. Escriba una función que reciba dos cadenas, la función debe retornar el número de ocurren-
cias de la primera cadena en la segunda, sin que está se traslape. Por ejemplo, observamos
que "101" ocurre una vez en "110101"

12. Suponga que dispone de las respuestas correctas de un examen de opción verdadero y falso,
sean dichas respuestas "vvfvffvfvfvvffvvvfvfff", además imagine que se quiere registrar
la nota de esta prueba para un estudiante en particular. Los estudiantes responden
el cuestionario en un formato de cadena, ingresando inicialmente el numero de cuenta.
Una cadena de respuesta podría ser "201410002321fvvfffvfvfvvvfvfvfvfvf". Desarrolle una
función que cuente el número de respuestas buenas.

13. Implemente una función que lea una cadena y luego imprima solo aquellas palabras que
terminen en "es". Ejemplo: Si la cadena es " Los peces y las aves no se llevan mal."
entonces se debe imprimir "peces aves."

14. Desarrollar un programa que lea una oración de a lo más 1400 caracteres, a continuación
el programa deberá imprimir la siguiente información:

• Número de palabras que contienen más vocales que consonantes.


• Número de palabras que contienen más consonantes que vocales.
• Número de palabras que contienen igual número de vocales que de consonantes.

15. Elabore un programa con las indicaciones que se describen a continuación. Inicialmente
el programa pedirá al usuario una cadena en la forma 0801-1992-00170 que corresponde
a un número de identidad. Entonces el programa deberá de imprimir lo siguiente:
La persona con el número de identidad 0801-1992-00170: Nació en el departamento:
08 . En el municipio: 01 . En el año: 1992 . Sus registros de nacimiento
están en el folio: 00170 .

16. Desarrolle un programa que lea una oración y determine si esta es un palíndromo. Una
oración es un palíndromo si se lee igual de derecha a izquierda. Ejemplo: la ruta nos
aporto otro paso natural.

17. Investigue en internet o en algún libro de referencia, como imprimir texto a colores desde
C++. A continuación desarrollará un programa que lea un párrafo de no más de 1000
caracteres y luego pedirá al usuario una palabra que se encuentre dentro del párrafo y
para finalizar el programa imprimirá todo el párrafo pero ahora con la palabra buscada
en rojo.
Por ejemplo si alguien escribe el párrafo:
El cerdo Snowball (Bola de Nieve) sería Lev Trotsky, líder militar que posteriormente huye
de la granja al ser perseguido por los perros de Napoleón. Una vez establecido el poder
de Napoleón, su sola mención constituye un delito grave y todo animal que se considere
peligroso será ejecutado bajo la acusación de ser seguidor de Bola de Nieve.
y luego se busca la palabra "de", entonces el programa deberá imprimir:
El cerdo Snowball (Bola de Nieve) sería Lev Trotsky, líder militar que posteriormente huye
de la granja al ser perseguido por los perros de Napoleón. Una vez establecido el poder

4
de Napoleón, su sola mención constituye un delito grave y todo animal que se considere
peligroso será ejecutado bajo la acusación de ser seguidor de Bola de Nieve.

18. Desarrolle una función que reciba una cadena y convierta las primeras letras de cada
palabra a mayúsculas.

19. Desarrolle una función que reciba una cadena y convierta las primeras letras de cada
palabra a mayúsculas.

20. Desarrolle una función que reciba una cadena(palabra) y luego imprima esta palabra
desglosada en sílabas.

21. Implemente una función que reciba una cadena y la codifique. Para ello debe usar el
código ASCII, cada carácter se transformará al carácter que se encuentre tres posiciones
adelante en el código ASCII.

22. Implemente una función que reciba dos cadenas representantes de dos palabras y deter-
mine cual es la mayor de estas dos en referencia al orden del diccionario.

23. Suponga que un usuario ingresa una cadena como la siguiente:

"4x∧3+3x-1"

El usuario tiene la intención de que su cadena se interprete como un polinomio. Escriba


una función que reciba una cadena en este formato y un número real, la función debe
evaluar el polinomio en el valor real.

Potrebbero piacerti anche