Coleccion de Ejercicios Arrays
Coleccion de Ejercicios Arrays
Coleccion de Ejercicios Arrays
Informtica
DPTO. DE INFORMTICA FACULTAD DE FSICAS
#include <iostream>
using namespace std;
#define ALUMNOS 10
leer_notas ( notas );
med = media ( notas);
sup_inf_media ( notas, med, sup_med, inf_med );
cout << "La media es " << med << " Y hay " << sup_med;
cout << " alumnos con nota Superior a la media y " << inf_med;
cout << " alumnos con nota inferior" << endl;
system("pause");
return 0;
}
1
ARRAYS UNIVERSITAT DE VALNCIA
Informtica
DPTO. DE INFORMTICA FACULTAD DE FSICAS
6. (Op1) (carrera.cpp) Realizar un programa que lea los tiempos en los que de 10 corredores han
acabado una carrera. El programa debe determinar qu corredores tienen el primer, segundo y
ltimo puesto, as como cul es el tiempo medio en que se ha corrido la carrera. La estructura del
programa ser la siguiente:
#include <iostream>
using namespace std;
#define CORREDORES 10
}
int main ( void )
{
float tiempos[CORREDORES], med;
int primer, segundo, ultimo;
cout << "Dame los tiempos de los 10 corredores " << endl;
leer_tiempos ( tiempos );
cout << "La media de tiempos es " << med << endl;
cout << "El primer puesto es del corredor nmero" << primer<< endl;
cout << "El segundo puesto es del corredor nmero" << segundo << endl;
cout << "El ultimo puesto es del corredor nmero" << ultimo << endl;
system("pause");
return 0;
}
7. (P3) (repetidos.cpp) Disea un programa que pida el valor de 10 nmeros enteros distintos y los
almacene en un vector. Si se da el caso y se trata de introducir un nmero repetido, el programa
advertir al usuario tan pronto sea posible, y solicitar nuevamente el nmero hasta que sea
diferente de todos los anteriores. A continuacin, el programa mostrar los 10 nmeros por
pantalla.
8. (Op3) (capicua.cpp) Realizar un programa que lea una cantidad determinada (que se pedir al
principio del programa) de nmeros enteros de una sola cifra, almacene dichos nmeros en un
vector y compruebe si el nmero formado por cada uno de los elementos del vector es capica o
no. Tomar como tamao mximo del vector, 100 elementos. Hacer una funcin LeerVector y
otra, EsCapicua.
2
ARRAYS UNIVERSITAT DE VALNCIA
Informtica
DPTO. DE INFORMTICA FACULTAD DE FSICAS
9. (puntos.cpp) Realizar un programa que pida las coordenadas de dos puntos en el espacio (puntos
tridimensionales) y te muestre un men con las siguientes opciones:
- Mostrar los puntos por pantalla
- Calcular la distancia entre los dos puntos
- Calcular el vector direccin de la recta que pasa por los dos puntos.
Habr que hacer una funcin/procedimiento para leer el punto tridimensional, otra para
visualizarlo, otra para calcular la distancia y otra para calcular el vector direccin de la recta. Y
todas sern llamadas desde el programa principal.
10. (vectores.cpp) Realizar un programa que tenga una funcin para leer vectores tridimensionales,
otra para mostrarlos por pantalla, otra para sumar, otra para multiplicar escalarmente los vectores
y otra para multiplicarlos vectorialmente. Realizar la funcin principal que haga uso de estas
funciones (mediante un men).
Nota: Dados dos vectores {(a1, a2, a3) y (b1 ,b2, b3)}, su producto escalar y su producto
vectorial se calculan mediante:
Producto escalar = ai *bi y
Producto vectorial de dos vectores u(x,y,z) y v(x,y,z), obteniendo: w(x,y,z)
w[x] = u[y] * v[z] - u[z] * v[y];
w[y] = u[z] * v[x] - u[x] * v[z];
w[z] = u[x] * v[y] - u[y] * v[x];
11. (P4) (sumafila.cpp) Disea un programa que lea los elementos de una matriz de 4 5 reales y
genere un vector de tamao 4 en el que cada elemento contenga el sumatorio de los elementos de
cada fila. El programa debe mostrar la matriz original y el vector en este formato (evidentemente,
los valores deben ser los que correspondan a lo introducido por el usuario):
12. (par_impar.cpp) Realiza un programa que vaya pidiendo nmeros enteros mientras que no se
introduzca el cero y rellene dos vectores, uno con los nmeros pares, y otro con los nmeros
impares. Al final, se debe mostrar por pantalla tanto el vector de nmeros pares como el de
impares, indicando la posicin del vector y el valor que ha sido almacenado. Hacer una
funcin/procedimiento para CargarVectores y otra para VisualizarVector.
3
ARRAYS UNIVERSITAT DE VALNCIA
Informtica
DPTO. DE INFORMTICA FACULTAD DE FSICAS
14. (Op2) (icono.cpp) Hacer un programa que permita leer iconos en blanco y negro. Los iconos se
almacenarn como matrices (arrays de dos dimensiones). El programa deber permitir introducir
un icono y mostrarlo, representando los 0 por espacios en blanco y los 1 por el carcter #.
Se deber emplear una funcin/procedimiento que implemente cada una de estas tareas
(LeerMatriz, VisualizarMatriz y VerIcono).
#define HORIZ 5
#define VERTI 3
bool icono[HORIZ][VERTI];
4
ARRAYS UNIVERSITAT DE VALNCIA
Informtica
DPTO. DE INFORMTICA FACULTAD DE FSICAS
15. (Op4) (SumaMatrices.cpp) Realizar un programa que pida dos matrices y las sume (siempre que
sea posible) o avise de que no se pueden sumar. Hacer el diseo descendente del problema (habr
seguro una funcin/procedimiento para leer la matriz y otra para el clculo de la suma). Lo
primero que se har es pedir la dimensin de la matriz y luego se leern sus datos.
Nota:
La suma de dos matrices A y B es otra matriz C teniendo en cuenta que,
para poder sumar matrices, ambas deben tener la misma dimensin, es
decir:
Am x n (A es una matriz de m filas y n columnas)
Bp x q (B es una matriz de p filas y q columnas)
Si m=p y n=q entonces:
Cm x n (C ser la matriz suma que tendr m filas y n columnas) y se
obtendr como:
Ci, j = Ai, j + Bi, j
16. (MultiplicaMatrices.cpp) Realizar un programa que pida dos matrices (utilizar para ello una
funcin de lectura de matices) y las multiplique (comprobando que esta operacin se puede
realizar).
Nota:
Producto de las matrices A y B es C
Am x p (A es una matriz de m filas y p columnas)
Bp x n (B es una matriz de p filas y n columnas)
Cm x n (C ser una matriz que tendr m filas y n columnas)
p
Donde Ci , j A
k 1
i ,k * Bk , j
El programa principal deber de tener la siguiente estructura:
#include <iostream>
/* Prototipos de funciones */
...
/* Funcion principal */
5
ARRAYS UNIVERSITAT DE VALNCIA
Informtica
DPTO. DE INFORMTICA FACULTAD DE FSICAS
17. (traspuesta.cpp) Calcular la matriz transpuesta de una matriz dada. Una matriz transpuesta de
otra dada es la que resulta de cambiar los valores de las filas de la matriz original por el de las
columnas.
Definirse un prototipo de la forma:
#define MAX_F 100
#define MAX_C 100
void transpuesta (double matriz[MAX_F][MAX_C], int f, int c);
La funcin transpuesta recibe la matriz original introducida por teclado y el nmero de filas y
columnas (parmetros f y c respectivamente) y tiene que calcular su transpuesta.
El programa principal deber mostrar por pantalla, en formato de matriz (filas x columnas) la
matriz original y su transpuesta.
Nota: Hacer tambin una funcin para leer matrices y para mostrarlas.
18. (tresenraya.cpp) Queremos un programa que nos permita jugar de forma sencilla al tres en raya a
dos jugadores (A y B). El programa permitir almacenar el estado del tablero (0 si nadie ha
insertado ficha en una posicin 1 para el jugador A y 2 para el jugador B). Realiza las
funciones/procedimientos que:
a. Muestren el estado actual del tablero.
b. Pidan la posicin de la ficha a introducir alternativamente a cada uno de los jugadores.
c. Comprueben si el tablero est lleno. Para simplificar esta versin no comprobar si se ha
hecho el tres en raya o no.
19. (tresenraya2.cpp) Completar el programa del tres en raya para que cada vez que se inserte una
ficha se compruebe si en el tablero hay un tres en raya hecho por alguno de los dos jugadores.
20. (palindroma.cpp) Realizar un programa en C/C++ que pida una frase y nos indique si es o no
palndroma (se lee igual de izquierda a derecha que de derecha a izquierda). Por ejemplo:
6
ARRAYS UNIVERSITAT DE VALNCIA
Informtica
DPTO. DE INFORMTICA FACULTAD DE FSICAS
21. (aleatorios.cpp) Implementa un programa que declare un vector de 100 nmeros enteros. El
programa deber entonces mostrar el siguiente men:
Los nmeros aleatorios se debern generar entre 0 y 1.000. Cada nmero se deber insertar
ordenado en el vector y podr haber nmeros repetidos. Para generar nmeros aleatorios se utilizar
la funcin rand() de la librera stdlib.h, que genera un nmero aleatorio entre 0 y
RAND_MAX. Para generar nmeros entre 0 y el valor que queramos se puede utilizar la siguiente
expresin:
num_aleatorio = rand() * max/RAND_MAX que genera nmeros aleatorios entre 0 y max 1.
Recuerda poner en el programa principal la inicializacin de la semilla:
srand(time(NULL))
22. (adivina.cpp) Escribir un programa por el que el primer jugador introduce una palabra, se
reordena aleatoriamente y el segundo jugador debe averiguar cul era la palabra introducida. No se
deben tener en cuenta las maysculas y minsculas, por lo tanto, se deber realizar una funcin
para convertir todas las cadenas ledas a minsculas.