Foro no oficial de la UPCT

Versión completa: Soluciones Examen 1º Parcial (Grupo B)
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.

Jesús Hernández Galián

Aporte que le gustará a mas de uno. Son las soluciones (hechas por mi) del primer parcial. Realizado en eclipse. Yo creo que no tiene ningún fallo. Así se hacen una idea de la dificultad (poca Astuto) del examen.

Aquí están los enunciados del examen:

[Para ver los enlaces debes registrate]

Aprobecho y le doy promocion a dropbox (menudo servidor), ya hemos conseguido las 25 GB. Gracias chicos.

Código PHP:
public class Ejercicio1 {

    public static 
double calcPi(long n){
        if (
n<=0)
            return -
1;
        
double sumatorio=0;
        for (
int i=1;i<=n;i++){
            
sumatorio+=(double)1/(i*i);
        }
        return 
Math.sqrt(6*sumatorio);
    }

Código PHP:
public class Ejercicio2 {

    public static 
int[] calcularFactoriales(int a[]){
        if(
a==null)
            return 
null;
        
int b[]=new int [a.length];
        if(
a.length==0)
            return 
b;
        for (
int i=0;i<a.length;i++){
            
int fact=1;
            for(
int j=a[i];j>=1;j--)
                
fact*=j;
            
b[i]=fact;
        }
        return 
b;
    }
    public static 
void main(String[] args) {
        
int a[]={5,6,7,8};
        
int b[]=calcularFactoriales(a);
        for(
int i=0;i<a.length;i++){
            if(
i==a.length-1)
                
System.out.println(a[i]);
            else 
System.out.print(a[i]+" ");
        }
        for(
int i=0;i<b.length;i++){
            if(
i==b.length-1)
                
System.out.println(b[i]);
            else 
System.out.print(b[i]+" ");
        }
    }

Código PHP:
public class Ejercicio3 {
    
    public static 
int[][] devolverDiagonales(int a[][]){
        if(
a==null || a.length==0)
            return 
null;
        for(
int i=0;i<a.length;i++){
            if(
a.length!=a[i].length)
                return 
null;
        }
        
int b[][]= new int [2][a[0].length];
        for(
int i=0;i<a.length;i++){
            for(
int j=0;j<a[0].length;j++){
                if(
i==j)
                    
b[0][j]=a[i][j];
                if(
i==a[0].length-1-j)
                    
b[1][i]=a[i][j];
            }
        }
        return 
b;
    }
    
    public static 
void main(String[] args) {
        
int a[][]={{1,2,3},{4,5,6},{7,8,9}};
        
int b[][]= devolverDiagonales(a);
        for(
int i=0;i<b.length;i++){
            for(
int j=0j<b[0].length;j++){
                if (
j==b[0].length-1)
                    
System.out.println(b[i][j]);
                else 
System.out.print(b[i][j]+" ");
            }
        }
    }

Creo que en el primer ejercicio no es necesario el upcasting a double ya que java lo hace automáticamente.

Buen aporte.

Enviado desde mi LG-P920

Pablo Lucas

Gran aporte Jesus!! Se agradece!! Gran sonrisa

Jesús Hernández Galián

(06-12-2012, 01:28)admin escribió:

[Para ver los enlaces debes registrate]

Creo que en el primer ejercicio no es necesario el upcasting a double ya que java lo hace automáticamente.

Buen aporte.

Enviado desde mi LG-P920
Creo que si que hace falta el upcasting. Aunque java lo haga automáticamente, la operación se realiza con el mayor tipo de dato de la operación. Y las "i" son long, por lo que la operación se va a realizar como un long (independientemente de que luego se convierta a double). En este caso, al ser una fracción 1/(i*i), java va a realizar la operación como si fuera un long (repito, independientemente de que luego se almacene como un double), por ejemplo: 1/4 = 1 o 0, porque long son enteros. Si embargo, si haces el upcasting a double de cualquier operando, la operación se realiza como un double, por ejemplo: 1/4 = 0.25

Gracias por los comentarios. Sonrisa

Antonio

Dios, excelente aporte al foro, cosas así hay que seguir intentando subir el foro Sonrisa .