Pages: [1]   Go Down
Print
Author Topic: Soluzione Seconda Prova 19/02/2013  (Read 1261 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
NetBender
Matricola
*
Offline Offline

Gender: Male
Posts: 77


WWW
« on: 20-02-2013, 15:59:49 »

Eccovi la mia soluzione per l'esame di ieri:
Testo (jpg): http://imageshack.us/a/img829/3808/19022013.jpg
Soluzione su PasteBin: http://pastebin.com/4M2C8ZJK
Soluzione (gli output nel testo hanno solo 2 cifre decimali ma il professore ha detto di non farci caso):
Code:
import java.util.Random;
abstract class A
{
        private float[] x;
        public A(float a)
        {
                x=new float[10];
                x[0]=a;
                for(int i=1; i<x.length; i++)
                {
                        x[i]=(float)(Math.sin(100*x[i-1]));
                }
        }
        public abstract float f();
        public float[] getX()
        {
                return x;
        }
        public String toString()
        {
                String str="";
                for(int i=0; i<x.length; i++)
                {
                        str+=""+x[i]+" ";
                }
                return str;
        }
}
class B extends A
{
        public B(float a)
        {
                super(a);
        }
        public float f()
        {
                float max=getX()[0];
                for(int i=1; i<getX().length; i++)
                {
                        if(getX()[i]>max)
                        {
                                max=getX()[i];
                        }
                }
                return max;
        }
        public String toString()
        {
                return "class B"+"[ "+super.toString()+"] f()="+f();
        }
}
class C extends A
{
        public C(float a )
        {
                super(a);
        }
        public float f()
        {
                float somma=0;
                for(int i=0;i<getX().length;i++)
                {
                        somma+=getX()[i];
                }
                return (float)(somma/getX().length);
        }
        public int gte(float thr)
        {
                int contatore=0;
                for(int i=0;i<getX().length;i++)
                {
                        if(getX()[i]>thr)
                        {
                                contatore++;
                        }
                }
                return contatore;
        }
        public String toString()
        {
                return "class C"+"[ "+super.toString()+"]  f()="+f()+" gte(.7)="+gte((float)0.7);
        }
}
class D
{
        private A a;
        private B b;
        private C c;
        public D(float seed)
        {
                if(seed>0.5)
                {
                        a=new B(seed);
                }else
                {
                        a=new C(seed);
                }
                b=new B(seed/2);
                c=new C(seed/3);
        }
        public float m()
        {
                float sigma=0;
                A p;
                if(a instanceof C)
                {
                        p=c;
                }else
                {
                        p=b;
                }
                for(int i=0; i<(p.getX()).length; i=i+2)
                {
                        sigma+=Math.max(a.getX()[i],p.getX()[i]);
                }
                return sigma;
        }
        public float h(float thr)
        {
                if(a instanceof C)
                {
                        return (float)((c.f()/b.f())*((C)a).gte(thr));
                }else
                {
                        return (float)(c.f()/b.f());
                }
        }
        public String toString()
        {
                return a.toString()+"\n"+"    "+b.toString()+"\n"+"    "+c.toString()+" "+"h(.7)="+h((float)0.7)+" m()="+m();
        }
}
class Esercizio_12
{
        public static void main(String[] args)
        {
                Random r=new Random(347537586);
                D[] vett=new D[50];
                for(int i=0;i<vett.length; i++)
                {
                        vett[i]=new D(r.nextFloat());
                }
                //Parte 0
                for(int i=0;i<vett.length; i++)
                {
                        System.out.println(i+"    "+vett[i].toString());
                }
                //Parte 1
                float sommaH=0;
                for(int i=0;i<vett.length;i++)
                {
                        sommaH+=vett[i].h((float)0.7);
                }
                System.out.print("Media= "+sommaH/vett.length);
                //Parte 2
                System.out.println("    vett[4].m()+vett[5].m()= "+(vett[4].m()+vett[5].m()));
        }
}
« Last Edit: 20-02-2013, 16:02:26 by NetBender » Logged

Ci sono λfx.f(f(f(f(f(f(f(f(f(fx))))))))) tipi di persone, quelli che conoscono i numerali di Church (e la codifica binaria) e quelli che non li conoscono..
(Io dopo aver passato un pomeriggio a studiare il Lambda Calcolo)

"Solo chi è abbastanza folle da credere di poter cambiare il mondo lo cambia davvero"
(Albert Einstein)
DarioL19F
Matricola
*
Offline Offline

Posts: 90


« Reply #1 on: 25-02-2013, 13:29:21 »

Eccovi la mia soluzione per l'esame di ieri:
Testo (jpg): http://imageshack.us/a/img829/3808/19022013.jpg
Soluzione su PasteBin: http://pastebin.com/4M2C8ZJK
Soluzione (gli output nel testo hanno solo 2 cifre decimali ma il professore ha detto di non farci caso):

grazie! un altro esercizio fa sempre bene 
Logged
Pages: [1]   Go Up
Print
Jump to: