1.
Rutear
public class c2ruteofunciones{
static double a, b, c;
public static void p22(double b,double h)
{
double c;
a=6;
c = b + h;
StdOut.printf("En el procedimiento p2 :%.1f %.1f %.1f\n",a,b,c);
};
public static double accion(double b)
{
double a;
a=5;
b = Math.pow(a,2);
c=b - a;
StdOut.printf("Valores en la funcion accion: %.1f %.1f %.1f \n",a,b,c);
p22(c,b);
StdOut.printf("Despues del procedimiento p2: %.1f %.1f %.1f\n",a,b,c);
return b;
}
public static void main(String[] args)
{
a=4; b=0;
c=accion(a);
StdOut.printf("Valores finales: %.1f %.1f %.1f\n",a,b,c);
}
}
1
a
4
principal
b
c
0
accion(a)
20
6
b
20
25
p22
h
25
c
b
4
25
accion
a
5
pantalla
valor
45
25
valores en la funcion accion: 5.0 25.0 20.0
en el procedimiento p2: 6.0 20.0 45.0
despues del procedimiento: 5.0 25.0 20.0
valores finales: 6.0 0.0 25.0
2
2. Codificar un programa que calcule la transpuesta de una matriz usando subprogramas
para: leer, obtener la transpuesta e imprimir.
public class c2traspuesta{
public static int N=3;
public static void leer(long m[][])
{
for (int i=0;i<N;i++)
for (int j=0;j<N;j++)
{
StdOut.println("Ingrese valor fila="+i+" columna="+j+":");
m[i][j]=StdIn.readLong();
}
}
public static void trans(long m[][])
{
long aux;
for (int i=0; i<N;i++)
for (int j=i+1;j<N;j++)
{
aux=m[i][j];
m[i][j]=m[j][i];
m[j][i]=aux;
}
}
3
public static void imprimir(long m[][])
{
for (int i=0;i<N;i++)
{
for (int j=0;j<N;j++)
StdOut.print(m[i][j]+" ");
StdOut.println();
}
}
public static void main(String[] args)
{
long[][] mat=new long[N][N];
leer(mat);
trans(mat);
imprimir(mat);
}
}
4
2. Codificar un subprograma java que determine su una matriz de NxN de enteros es
simétrica.
public static boolean simetrica(int n, int[][] m)
{
boolean es;
es=true;
for (int f=0;f<n;f++)
for (int c=f+1;c<n;c++)
if (m[f][c]!=m[c][f])
es=false;
return es;
}
5
3.Las secuencias de ADN están compuestas de los siguientes elementos:
G: guanina
A: adenina
C: citosina
T: tinina
Para saber si dos secuencias son iguales, se debe comparar elemento por elemento, pero
teniendo en cuenta que las secuencias son cíclicas. Por ejemplo, las dos siguientes secuencias
son iguales:
Se solicita codificar un programa que indique si dos secuencias de largo L=1000, son iguales. Para
ellos se deberá:
a) Codificar una función que lea un vector de largo L (parámetros: vector y largo) con validación.
b) Codificar una función que haga un shift a un vector de largo L, moviendo todos los elementos un
espacio hacia la izquierda (parámetros: vector y largo).
c) Codificar un programa que compare dos vectores y devuelva true o false dependiendo si son
iguales (parámetros: los dos vectores y el largo).
d) Codificar el programa principal que compare las dos secuencias usando las funciones anteriores
e indique si dos secuencias ingresadas son o no iguales.
6
public class adns{
static int N=2;
public static void leer(String mensaje,int n,char[] v)
{
StdOut.println("Ingrese los valores de "+mensaje);
for (int i=0;i<n;i++)
{
do
{
StdOut.println("Ingrese elemento:"+i);
v[i]=StdIn.readChar(); StdIn.readLine();
} while ((v[i]!='A')&&(v[i]!='G')&&(v[i]!='T')&&(v[i]!='C'));
}
}
public static boolean iguales(int n,char[] v1,char[] v2)
{
boolean son_iguales;
son_iguales=true;
for (int i=0;i<n;i++)
if (v1[i]!=v2[i])
son_iguales=false;
return son_iguales;
}
7
public static void shift(int n,char[] v)
{
char aux;
aux=v[0];
for (int i=0;i<n-1;i++)
v[i]=v[i+1];
v[n-1]=aux;
}
public static void main(String[] args)
{
char[] patron=new char[N];
char[] adn=new char[N];
leer("patron",N,patron);
leer("adn",N,adn);
boolean adn_iguales;
adn_iguales=false;
int cont=0;
while ((cont<N)&&(!adn_iguales))
{
if (iguales(N,patron,adn))
adn_iguales=true;
else
shift(N,adn);
cont++;
}
if (adn_iguales)
StdOut.println("ADN iguales");
else
StdOut.println("ADN distintos");
}
}
8
3. Una cadena de sala de cines desea conocer cual es la película más vista en
un mes. Para ello cuenta con una matriz con 7 salas de cine y 15 películas y la
cantidad de gente que asistió por cada sala y película. Codificar un programa
Java que llene la matriz y determine cual es la película mas vista,
9
public class cine{
public static int salas=7; public static int peliculas=15;
public static void leer(int m[][])
{
for (int cines=0;cines<m.length;cines++)
for (int pelicula=0;pelicula<m[0].length;pelicula++)
{
StdOut.printf("Ingrese asistentes sala:%d, pelicula: %d",cines,pelicula);
m[cines][pelicula]=StdIn.readInt();
}
}
public static void main(String[] args)
{
int[][] mat=new int[salas][peliculas];
leer(mat);
int masvista=0; int publico=0,suma;
for (int c=0;c<peliculas;c++)
{
suma=0;
for (int f=0;f<salas;f++)
suma+=mat[f][c];
if (c==0)
{
masvista=c;
publico=suma;
}
else
if (suma > publico)
{
masvista=c;
publico=suma;
}
}
StdOut.printf("La pelicula mas vista es:%d, con un publico =%d",masvista,publico);
}
}
10
4. Rutear el siguiente programa.
public class SPROG6{
static void cambia (int v[])
{
int aux;
aux=v[0];
v[0]=v[1];
v[1]=aux;
};
public static void main (String[] args)
{
int[] z=new int[2];
z[0]=24;
z[1]=56;
cambia(z);
StdOut.printf("%d %d\n",z[0],z[1]);
}
}
cambia(v)
v
main
aux
24
56
56
24
pantalla
z
24
56
56
24
24
56 24
11
4. Codificar un programa que lea un rut, lo pase a un vector de largo 8 y luego
calcule el dígito verificador en módulo 11 usando para ello un subprograma .
12
public class dv{
public static int n=8;
public static char dv(int v[])
{
int suma; int factor,resto; char digito;
factor=2; suma=0;
for (int i=v.length-1; i>0;i--)
{
suma+=v[i]*factor;
factor++;
if (factor==8)
factor=2;
}
resto=11-suma % 11;
switch (resto)
{
case 11:digito='K';
break;
case 10:digito='0';
break;
default:digito=(char)(resto+48);
break;
}
return digito;
}
public static void main(String[] args)
{
int vector[]={0,0,0,0,0,0,0,0}; int i;
int rut;
StdOut.println("Ingrese rut:");
rut=StdIn.readInt();
i=n-1;
while (rut != 0)
{
vector[i]=rut %10;
rut=rut/10;
i--;
}
StdOut.println("El digito verificador es:"+dv(vector));
}
}
13
Descargar

IWI-131 PROGRAMACION DE COMPUTADORES