You are on page 1of 4

Fundamentos

de Programacin GIT GIST

Examen Final 11/07/2014 (2 horas)

NOMBRE:
DNI:

Ejercicio 1 (2 puntos)
El nmero PI puede calcularse de forma iterativa utilizando diferentes expresiones. Una de ellas es
la frmula de Leibniz, que se muestra a continuacin.

Implemente una funcin piLeibniz con la siguiente cabecera:
public static float piLeibniz(long n)
que toma como argumento el valor mximo de iteraciones n y retorna el valor de pi
correspondiente. Si el nmero de iteraciones es menor que cero, la funcin retornar -1.

Ejercicio 2 (2,5 puntos)



Escriba una funcin concatenar con la siguiente cabecera:
public static int [] concatenar(int [] a, int [] b)
que devuelve un array unidimensional resultado de concatenar los dos arrays pasados como
argumentos. La funcin deber:
Comprobar la validez de los argumentos.
Mostrar en pantalla el array resultante antes de retornarlo.
Por ejemplo,
Si los argumentos son a = {1,2,3,4,5,6,7,8,9} y b = {10,11,12} la funcin mostrar
en pantalla y retornar el array {1,2,3,4,5,6,7,8,9,10,11,12}.

Ejercicio 3 (2,5 puntos)



a) Escriba una funcin que tome como argumento un array bidimensional de nmeros reales y
compruebe si es una matriz cuadrada. En caso de ser matriz cuadrada el mtodo retornar
true, y en caso contrario retornar false. El mtodo deber comprobar la validez de los
argumentos (1 punto).
b) Escriba una funcin que calcule el determinante de una matriz de dos filas y dos columnas
que se toma como argumento implementada como un array bidimensional de nmeros
reales. El mtodo deber comprobar la validez de los argumentos, es decir, comprobar que
el argumento es una matriz cuadrada de dos filas y dos columnas. Haga uso de la funcin
anterior (1,5 puntos).


Fundamentos de Programacin GIT GIST

Examen Final 11/07/2014 (2 horas)

Ejercicio 4 (3 puntos)

Para realizar operaciones de lgebra vectorial, se quieren modelar los vectores de tres dimensiones
mediante la clase Vector. As, para el vector A = A1 i + A2 j + A3 k, A1, A2 y A3 son nmeros reales
que representan las coordenadas x, y, z del extremo del vector de origen cero. Implemente la clase
Vector. Para ello,

Utilice un array de nmeros reales para almacenar las coordenadas del vector.
Proporcione un constructor.
Incluya mtodos de acceso a las diferentes coordenadas.
Incluya un mtodo que devuelva el mdulo del vector al que se le enva el mensaje.
Incluya un mtodo que devuelva el producto escalar del vector al que se le enva el mensaje
con otro pasado como argumento.
Implemente un main que haga uso de la clase Vector. Deber crear dos vectores,
mostrar sus mdulos y su producto escalar.

Fundamentos de Programacin GIT GIST

Examen Final 11/07/2014 (2 horas)


//Ejercicio 1
public static float piLeibniz(long n){
if (n<0) return -1;
float pi = 0;
for (int k = 0; k <= n; k++){
int signo = (k%2 == 0)?1:-1;
pi += (signo /((2.0*k)+1));
}
return pi*4;
}
//Ejercicio 2
public static int [] concatenar (int [] a, int [] b){
if (a==null || b==null || a.length==0 || b.length==0) return null;
int [] resultado = new int[a.length+b.length];
for (int i=0; i<a.length; i++) resultado[i]=a[i];
for (int i=a.length; i<resultado.length; i++)
resultado[i]=b[i-a.length];
for (int i=0; i< resultado.length; i++)
System.out.print(resultado[i]+" ");
return resultado;
}
//Ejercicio 3
public static boolean EsCuadrada(double[][] m){
if (m == null) return false;
for (int i=0;i<m.length;i++)
if (m.length != m[i].length) return false;
return true;
}
public static double determinante2(double [][]m){
if (EsCuadrada(m) && m.length == 2)
return m[0][0] * m [1][1] - m[0][1] * m[1][0];
return 0;
}

Fundamentos de Programacin GIT GIST

Examen Final 11/07/2014 (2 horas)


//Ejercicio4
public class Vector{
private double [] coordenadas = new double[3];
// creacin de un vector a partir de tres coordenadas del extremo
public Vector (double x, double y, double z) {
coordenadas[0] = x;
coordenadas[1] = y;
coordenadas[2] = z;
} ;
// mtodo para calcular el mdulo del vector
public double modulo () {
double modulo = 0.0;
for (int i = 0; i < coordenadas.length; i++)
modulo += coordenadas[i]*coordenadas[i];
return (Math.sqrt(modulo));
};
// devuelve la coordenada en la direccin x
public double get_coordenada_x() {return coordenadas[0];};
// devuelve la coordenada en la direccin y
public double get_coordenada_y() {return coordenadas[1];};
// devuelve la coordenada en la direccin z
public double get_coordenada_z() {return coordenadas[2];};
// devuelve un escalar producto de l mismo con otro vector
// no es necesario utilizar los mtodos get puesto que el
// argumento es de la misma clase
public double ProductoEscalar (Vector n) {
return (coordenadas[0]*n.get_coordenada_x() +
coordenadas[1]*n.get_coordenada_y() +
coordenadas[2]*n.get_coordenada_z());
};
public static void main(String[] args) {
Vector vector1 = new Vector(1,1,1);
Vector vector2 = new Vector(2,2,2);
System.out.println("Mdulo 1:"+ vector1.modulo());
System.out.println("Mdulo 2:"+ vector2.modulo());
System.out.println("Producto escalar: " +
vector1.ProductoEscalar(vector2));
}
}