TAREA 2.
3
Tema: Recursividad
INSTRUCCIONES
1. Todas las funciones requerida deben ser implementadas usando recursividad.
2. Cada problema debe ser guardado en un archivo denominado: Problema1.cpp,
Problema2.cpp, etc., según el número del problema.
2. De ser necesario, pueden usarse una o más función adicionales.
Problema1:
Escribir la función: int cantidadPalabras(string frase), que devuelva la cantidad
de palabras existentes en la frase. El programa principal debe leer una frase con
una o más palabras, las que estarán separadas por simples espacios; luego debe
llamar a la función cantidadPalabras() e imprimir el resultado que la función
devuelve.
EJEMPLO DE ENTRADA
hola mundo como estas
EJEMPLO DE SALIDA
4
EJEMPLO DE ENTRADA
una palabra
EJEMPLO DE SALIDA
2
Problema2:
Escribir la función: int fibonacci(int n), que devuelva el n-ésimo término de la
serie de Fibonacci. El programa principal debe leer un número natural: n, llamar a
la función fibonacci() e imprimir el resultado que esa función devuelve.
EJEMPLO DE ENTRADA
7
EJEMPLO DE SALIDA
13
EJEMPLO DE ENTRADA
10
EJEMPLO DE SALIDA
55
Aclaración: recordar que la función de Fibonacci es:
1 1 2 3 5 8 13 21 34 55 ...
Problema3:
Escribir la función: int contarSubcadenas(string cad, char c), que devuelva la
cantidad de subcadenas de letras consecutivas iguales al caracter c, que existen en
la cadena cad. El programa principal debe leer una cadena y un carácter, llamar a
la función contarSubcadenas() e imprimir el resultado que esa función devuelve.
EJEMPLO DE ENTRADA
bbbaaaannnannaaa
a
EJEMPLO DE SALIDA
3
EJEMPLO DE ENTRADA
Esta es una prueba
e
EJEMPLO DE SALIDA
2
Problema4:
Escribir la función: int contarLetras(string frase), que devuelva la cantidad de
letras existentes en la cadena, ignorando cualquier otro carácter. El programa
principal debe leer una frase, llamar a la función contarLetras() e imprimir el
resultado que esa función devuelve.
EJEMPLO DE ENTRADA
¡hola mundo!.
EJEMPLO DE SALIDA
9
EJEMPLO DE ENTRADA
Los simbolos: < > se denominan parentesis angulares.
EJEMPLO DE SALIDA
41
Problema5:
Escribir la función: void eliminarRepetidos(vector<int>& vec) que elimine todos los
elementos repetidos del vector, dejando solo la primera aparición u ocurrencia;
para ello, no se debe usar ninguna estructura de datos extras. El programa
principal debe leer un número entero: n, luego leer n números enteros, cargarlos al
vector e imprimir el mismo en una línea, por último llamar a la función:
eliminarRepetidos() e imprimir el contenido del vector en otra línea.
EJEMPLO DE ENTRADA
9
2 5 8 2 3 9 5 8 7
EJEMPLO DE SALIDA
2 5 8 2 3 9 5 8 7
2 5 8 3 9 7
Problema6:
Escribir la función: vector<int> separar(vector<int>& vec), que devuelva un nuevo
vector con los elementos de índice impar de vec, quedando en vec solo los elementos
de índice par. El programa principal debe leer un número natural: n, luego leer n
números enteros y cargarlos en el vector, a continuación imprimir el mismo en una
línea, luego llamar a la función separar() e imprimir vec y por último imprimir el
nuevo vector que la función devuelve, en otra línea.
EJEMPLO DE ENTRADA
13
1 2 3 4 5 6 7 8 9 10 11 12 13
EJEMPLO DE SALIDA
1 2 3 4 5 6 7 8 9 10 11 12 13
1 3 5 7 9 11 13
2 4 6 8 10 12
Problema7:
Escribir la función: void rotar90Izq(vector<vector<int>>& vec) que rote la matriz
cuadrada, 90 grados en sentido levogiro (en sentido contrario a las agujas de
reloj). El programa principal debe leer un número entero: n, que es el orden de la
matriz cuadrada, luego debe leer n x n números enteros y los cargue en una matriz e
imprima la misma; a continuación llame a la función: rotar90Izq() y vuelva a
imprimir la matriz, tal como se muestra en el ejemplo de salida.
EJEMPLO DE ENTRADA
3
1 2 3 4 5 6 7 8 9
EJEMPLO DE SALIDA
1 2 3
4 5 6
7 8 9
3 6 9
2 5 8
1 4 7
Problema8:
Escribir la función: bool filaYColumnaIguales(vector<vector<int>>& vec), que
devuelva 1 si existe alguna fila con los valores iguales a alguna columna,
manteniendo el orden de los valores de izquierda a derecha y de arriba hacia abajo.
El programa principal debe leer un número entero: n, que es el orden de la matriz
cuadrada, luego leer n x n números enteros y los cargue en la matriz y la imprima;
a continuación llame a la función filaYColumnaIguales() e imprima el resultado que
esa función devuelve.
EJEMPLO DE ENTRADA
4
7 2 4 2
9 3 3 4
2 4 5 3
2 3 4 3
EJEMPLO DE SALIDA
1
Problema9:
Escribir la función: bool esSimetrica(vector<vector<int>>& matriz) que devuelva: 1
si la matriz es simétrica respecto a su diagonal principal, y devuelva 0 en caso
contrario. El programa principal debe leer un número entero: n, crear una matriz de
orden n, leer y cargar en la matriz n x n números enteros, llamar a la función
esSimetrica() e imprimir el resultado que esa función devuelve.
EJEMPLO DE ENTRADA
3
1 2 3
2 4 5
3 5 6
EJEMPLO DE SALIDA
1