acticas de Introducci
on a la Programaci
on (IPR) y
Algoritmos y Estructuras de Datos I (AD1)
Grupo 1-B. Enero 2001
SOLUCION:
class Seno { //Calculo de la funcion seno
public static void main (String args[]) {
final double epsilon=0.0000001;
double s, t, x; int k;
System.out.println(
Angulo+\t+Seno);
for (x=0; x<21; x++) {
t=x; s=x; k=1;
while (Math.abs(t)>epsilon) {
k++;
t=-t*((x*x)/(k*(k-1)));
s=s+t;
}
System.out.println(x + \t+s);
}
}
}
1
2. Escribir en Java las instrucciones necesarias para declarar y crear un vector de 100
enteros. (Puntuaci
on: 1 punto).
SOLUCION:
int v[]= new int[100];
3. Dada la siguiente funci
on en Java:
// Suponemos v creado con 10 componentes
static int f (int v[], int s) {
for (int i=0;i<10;i++) {
s+=v[i];
v[i]+=2;
}
return (s);
}
Supongamos que se realiza la siguiente llamada:
(Puntuaci
on: 3 puntos).
SOLUCION:
(a) La funci
on devuelve como resultado el valor original del segundo argumento m
as la suma de los valores originales del vector v (primer argumento).
Adem
as, modifica los valores del vector incrementandolos en dos unidades.
(b) El valor de x contin
ua siendo 0.
(c) Despues de la llamada el vector v contiene los valores (2,3,4,5,6,7,8,9,10,11).
(d) El segundo par
ametro (x) se pasa por valor y el primero (v) por referencia;
es por esto que cuando termina la llamada, el valor del segundo par
ametro
no se ha modificado y sin embargo, el contenido del vector s.
4. Dado el siguiente procedimiento para calcular la matriz de una generaci
on en el
juego de la vida:
1.
2.
3.
4.
5.
static void calcMat(boolean m[][], boolean mnueva[][], int nfil, int ncol) {
int nvec;
for (int i=1; i<=nfil; i++)
for (int j=1; j<=ncol; j++) {
nvec=0;
2
6.
7.
8.
9.
10.
11.
12.
13.
14. }
Dise
nar una funci
on para calcular el n
umero de vecinos vivos de una celda dada
de una determinada matriz. La definicion de la funcion debe permitir sustituir las
lneas 5 a 9 por la siguiente instruccion: nvec=vecinos(m,i,j); (Puntuaci
on: 3
puntos)
SOLUCION:
static int vecinos(boolean m[][], int i, int j) {
int cont=0;
for (int ii=i-1; ii<=i+1; ii++)
for (int jj=j-1; jj<=j+1; jj++)
if (m[ii][jj]) cont++;
if (m[i][j]) cont--;
return cont;
}