Está en la página 1de 6

Guía 5: Arrays, Listas, Tuplas y Cadenas de

Caracteres

Esteban J. Palomo, J.L. Subirats

June 8, 2016

1. Diseñar un algoritmo que inicialice un array de tamaño n con todas sus
posiciones a cero

2. Diseñar un algoritmo que lea n valores, calcule su media y después


muestre el número de elementos leídos que son superiores a la media.

3. Escribir una función que reciba una tupla de elementos e indique si se


encuentran ordenados de menor a mayor o no.

4. Dominó

(a) Escribir una función que indique si dos chas de dominó encajan o
no. Las chas son recibidas en dos tuplas, por ejemplo: (3,4) y (5,4).

(b) Escribir una función que indique si dos chas de dominó encajan o
no. Las chas son recibidas en una cadena, por ejemplo: 3-4 2-5.
Nota: utilizar la función split de las cadenas.

5. Campaña electoral.

(a) Escribir una función que reciba una tupla con nombres, y para cada
nombre imprima el mensaje Estimado XXX, vote por mí.

(b) Utilizando la función del literal a), escribir una función que reciba
una tupla con nombres, una posición de origen p y una cantidad n,
e imprima el mensaje anterior para los n nombres que se encuentran
a partir de la posición p.
(c) Realizar una función similar a la del ejercicio a) anterior para que
tenga en cuenta el género del destinatario, para ello, deberán recibir
una tupla de tuplas, conteniendo el nombre y el género. Por ejemplo:

voteme( ((0 Juan0 ,0 H 0 ), (0 P aco0 ,0 H 0 )), (0 Luis0 ,0 H 0 ), (0 Ana0 ,0 M 0 )) )


deberı́a devolver una cadena :
Estimado señor Juan, vote por Subi
Estimado señor P aco, vote por Subi
Estimado señor Luis, vote por Subi
Estimado señorita Ana, vote por Subi

1
6. Vectores

(a) Escribir una función que reciba dos vectores y devuelva su producto
escalar.

(b) Escribir una funcion que reciba dos vectores y devuelve un vector
suma

(c) Escribir una función que reciba dos vectores y devuelva si son o no
ortogonales (utilice la función anterior). Dos vectores son ortogonales
si su producto escalar es cero

(d) Escribir una función que reciba un vector y devuelva su norma.

7. Matrices

(a) Escribir una función que reciba una Matriz y un escalar y devuelva
su producto escalar.

(b) Escribir una funcion que reciba dos Matrices y devuelve una Matriz
suma

(c) Escribir una funcion que reciba dos Matrices y devuelve una Matriz
producto

(d) Escribir una funcion que devuelva la traspuesta de una matriz

8. En sistema decimal, las cifras que componen un número son las cantidades
que están multiplicando a las distintas potencias de diez (10, 100, 1000,
10000, etc.). Por ejemplo, 745 = 7 · 100 + 4 · 10 + 5 · 1, o lo que es lo
mismo: 745 = 7 · 102 + 4 · 101 + 5 · 100 . En el sistema binario, las cifras
que componen el número multiplican a las potencias de dos (1, 2, 4, 8, 16,
. . . .)

20 = 1, 21 = 2, 22 = 4, 23 = 8, 24 = 16, 25 = 32, 26 = 64, ...

Para pasar a decimal un número binario, empezamos por la derecha y


vamos multiplicando cada cifra por las sucesivas potencias de 2, avanzando
hacia la izquierda. Para hacer la conversión de decimal a binario, hay que
ir dividiendo el número decimal entre dos y anotar el resto (un 0 si el
resultado de la división es par y un 1 si es impar). La lista de ceros y unos
leídos de abajo a arriba es el resultado. Por ejemplo:

101102 = 0 · 20 + 1 · 21 + 1 · 22 + 0 · 23 + 1 · 24 = 2 + 4 + 16 = 2210
1102 = 0 · 20 + 1 · 21 + 1 · 22 = 2 + 4 = 610
10111010012 = 1·20 + 1·23 + 1·27 + 1·25 + 1·26 + 1·29 = 74510
7910 impar 1
3910 impar 1
1910 impar 1
910 impar 1 =⇒ 7910 = 1011112
410 par 0
210 par 0
110 impar 1

2
(a) Escribir una función que reciba una cadena de unos y ceros (es decir,
un número en representación binaria) y devuelva el valor decimal
correspondiente.

(b) Escribir una función que reciba un numero entero y devuelva una
cadena de unos y ceros que representa su valor binario

9. Dada una lista de números enteros, escribir funciones que:

(a) Devuelva tres listas, una con los menores, otra con los mayores y otra
con los iguales a k.
(b) Devuelva una lista con aquellos que son múltiplos de k.

10. Escribir una función que reciba una lista de tuplas (Apellido, Nombre,
Inicial_segundo_nombre) y devuelva una lista de cadenas donde cada
una contenga primero el nombre, luego la inicial con un punto, y luego el
apellido.

11. Inversión de listas

(a) Realizar una función que, dada una lista, devuelva una nueva lista
cuyo contenido sea igual a la original pero invertida. Así, dada la lista
[0 Di0 ,0 buen0 ,0 dı́a0 ,0 a0 ,0 papa0 ], deberá devolver [0 papa0 ,0 a0 ,0 dı́a0 ,0 buen0 ,0 Di0 ].
(b) Realizar otra función que invierta la lista, pero en lugar de devolver
una nueva, modique la lista dada para invertirla, SIN USAR LIS-
TAS AUXILIARES

12. Escribir una función empaquetar para una lista, donde empaquetar sig-
nica indicar la repetición de valores consecutivos mediante una tupla
(valor, cantidad de repeticiones). Por ejemplo, empaquetar([1, 1, 1, 3, 5, 1, 1, 3, 3])
debe devolver [(1, 3), (3, 1), (5, 1), (1, 2), (3, 2)].
13. Hay un tipo de pasatiempos que propone descifrar un texto del que se
han suprimido las vocales. Por ejemplo, el texto .n .j.mpl. d. p.s.t..mp.s
se descifra sustituyendo cada punto con una vocal del texto. La solución
es un ejemplo de pasatiempos Diseña un programa que ayude al creador
de pasatiempos. El programa recibirá una cadena y mostrará otra en la
que cada vocal ha sido reemplazada por un punto

14. Escribir funciones que dada una cadena de caracteres:

(a) Imprima los dos primeros caracteres.

(b) Imprima los tres últimos caracteres.

(c) Imprima dicha cadena cada dos caracteres. Ej.: recta debería im-
primir rca

(d) Dicha cadena en sentido inverso. Ej.: hola mundo! debe imprimir
!odnum aloh

3
(e) Imprima la cadena en un sentido y en sentido inverso. Ej: reejo
imprime reejoojelfer.

15. Escribir funciones que dada una cadena y un caracter:

(a) Inserte el caracter entre cada letra de la cadena. Ej: separar y ,
debería devolver s,e,p,a,r,a,r

(b) Reemplace todos los espacios por el caracter. Ej: mi archivo de
texto.txt y \_ debería devolver mi\_archivo\_de\_texto.txt

(c) Reemplace todos los dígitos en la cadena por el caracter. Ej: su clave
es: 1540 y X debería devolver su clave es: XXXX

(d) Inserte el caracter cada 3 dígitos en la cadena. Ej. 2552552550 y


. debería devolver 255.255.255.0

16. Escribir una función que reciba una cadena que contiene un número entero
y devuelva una cadena con el número y las separaciones de miles. Por
ejemplo, si recibe 1234567890, debe devolver 1.234.567.890

17. Escribir una función que dada una cadena de caracteres, devuelva:

(a) La primera letra de cada palabra. Por ejemplo, si recibe Universal


Serial Bus debe devolver USB.

(b) Dicha cadena con la primera letra de cada palabra en mayúsculas.


Por ejemplo, si recibe república argentina debe devolver República
Argentina.

(c) Las palabras que comiencen con la letra A. Por ejemplo, si recibe
Antes de ayer debe devolver Antes ayer.

18. Escribir funciones que dada una cadena de caracteres:

(a) Devuelva solamente las letras consonantes. Por ejemplo, si recibe


algoritmos o logaritmos debe devolver lgrtms.

(b) Devuelva solamente las letras vocales. Por ejemplo, si recibe sin
consonantes debe devolver i ooae.

(c) Reemplace cada vocal por su siguiente vocal. Por ejemplo, si recibe
vestuario debe devolver vistaerou.

(d) Indique si se trata de un palíndromo. Por ejemplo, anita lava la


tina es un palíndromo (se lee igual de izquierda a derecha que de
derecha a izquierda).

19. Escribir funciones que dadas dos cadenas de caracteres:

(a) Indique si la segunda cadena es una subcadena de la primera. Por


ejemplo, cadena es una subcadena de subcadena.

4
(b) Devuelva la que sea anterior en orden alfábetico. Por ejemplo, si
recibe kde y gnome debe devolver gnome.

20. Matrices

(a) Escribir una función que reciba dos matrices y devuelva la suma.

(b) Escribir una función que reciba dos matrices y devuelva el producto.

(c) Escribir una función que opere sobre una matriz y mediante elimi-
nación gaussiana devuelva una matriz triangular superior.

(d) Escribir una función que indique si un grupo de vectores, recibidos


mediante una lista, son linealmente independientes o no.

21. Plegado de un texto.

Escribir una función que reciba un texto y una longitud y devuelva una
lista de cadenas de como máximo esa longitud. Las líneas deben ser cor-
tadas correctamente en los espacios (sin cortar las palabras).

22. Diseña un algoritmo que dena el tipo Libro, cuyos campos son autor,
titulo y año de publicación. Después cree una variable de tipo libro cuyos
campos se leen desde teclado y, nalmente, muestre por pantalla los años
desde que se publicó. Por ejemplo:

Introduzca el autor del libro: J.R.R. Tolkien

Introduzca el titulo del libro: El señor de los anillos

Introduzca el año de publicación: 1954

El libro El señor de los anillos se publicó hace 60 años.

23. Dena la clase Punto, con los campos x e y. Diseñe una funcion distancia
que calcula la distancia euclidea entre dos puntos. Cree dos variables p1 y
p2 de tipo punto, pidiendo las coordenadas desde la consola. Finalmente,
calcule la distancia existente entre los dos puntos y la muestre por pantalla.

24. Diseñar un algoritmo que lea el nombre, cédula y edad de los alumnos de
clase y:

(a) Calcule su edad media

(b) Determine si existe algún alumno con 20 años

(c) Muestre el alumno más viejo

25. Un taller necesita una aplicación para gestionar los coches que tiene que
reparar. De cada coche es necesario almacenar:

(a) Marca (cadena): marca del coche (e.g.: Renault)

(b) Modelo (cadena): modelo del coche (e.g., Clio)

(c) Matrícula (cadena).

5
(d) Presupuesto (numérico): valor presupuestado de la reparación.

(e) Prioridad (numérico): un valor positivo que indica la urgencia de la


reparación de forma cero es la prioridad máxima.

Se pide diseñar un programa que:

• Dena la estructura de datos adecuada.

• Lea y almacene vehículos desde teclado.

• Una vez almacenados: Muestre la matrícula del vehículo con mayor


prioridad.

• Muestre marca y modelo del vehículo con mayor presupuesto de


reparación

• La suma de los presupuestos de todos los coches para calcular los


benecios del taller.

También podría gustarte