Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 1, 9 CFU => Topic started by: callo on 20-06-2009, 12:10:50



Title: Esercizi Prova Laboratorio
Post by: callo on 20-06-2009, 12:10:50
Ragazzi ho scaricato una prova esempio dal sito del prof,mi sono fotocopiato la prova di aprile e del 2febbraio e le ho risolte(certo quella esempio del prof non capisco perchè mi da 2valori giusti e 1 no però va bene lo stesso)conoscete altri posti dove posso prendere altre prove?perchè diciamo che non le ho risolte proprio in 1ora quindi vorrei continuare ad esercitarmi!!! .arrossisco


Title: Re:Esercizi Prova Laboratorio
Post by: Fr3d3R!K on 20-06-2009, 12:17:19
in giro per il forum (vecchio e nuovo), oppure in fotocopisteria.
questo (http://www.dmi.unict.it/u2/index.php?option=com_joomlaboard&Itemid=34) è il vecchio forum.
Saluti.


Title: Re:Esercizi Prova Laboratorio
Post by: callo on 20-06-2009, 13:28:41
Grazie. Proverò a cercare nel vecchio forum.


Title: Re:Esercizi Prova Laboratorio
Post by: pippo on 22-06-2009, 11:11:14
soeca :-ciao, potresto postare la prova laboratorio di aprile...?? grazie :-ciao


Title: Re:Esercizi Prova Laboratorio
Post by: callo on 22-06-2009, 11:25:38
Sorry errore mio non ho quella di aprile ma ho quella di marzo precisamente quella del 02/03/09
Piuttosto ho svolto l'esercizio non mi da problemi di compilazione però vado ad eseguirlo e.........diciamo che i risultati che ottengo riguardo la somma delle componenti di indice 13 non sono proprio identici a quelli che vuole il prof(dovrebbe risultare 47557 ma a me risulta 44642 .penso)....questo è il codice:
Code:
import java.util.*;
abstract class A
{
private int x;
public A(int x)
{
this.x=x;
}
abstract public int [] f();
}
abstract class B extends A
{
private int w;
private E e;
public B(int x, int w, double d)
{
super (x);
this.w=w;
e=new E(d);
}
public float alfa()
{
return (float)(w+e.getCoeff());
}
}
class C extends A
{
private int z;
public C(int x, int z)
{
super(x);
this.z=z;
}
public int [] f()
{
Random r=new Random(22446688);
int [] a = new int[100];
for(int i=0;i<a.length;i++)
{
a[i]=z+r.nextInt(1000);
}
return a;
}
}
class D extends B
{
public D (int x,int w, double d)
{
super(x,w,d);
}
public int [] f()
{
Random r= new Random(22446688);
int [] b = new int[100];
int temp=0;
for(int i=0;i<b.length;i++)
{
b[i]=r.nextInt(400);
for(int j=i+1;j<b.length-1;j++)
{
if(b[i]>b[j])
{
temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
}
return b;
}
}
class E
{
private float coeff;
public E (double c)
{
coeff=(float)c;
}
public double getCoeff()
{
return (double)coeff;
}
}
public class eserciziodimarzodilaboratorio
{
public static void main(String args[])
{
Random r= new Random (2245544);
A [] vett = new A[100];
for(int i=0;i<vett.length;i++)
{
int x=r.nextInt(10);
int y=r.nextInt(100);
double d=r.nextDouble()*40;
if(r.nextInt(2)==1)
vett[i] = new C(x,y);
else
vett[i] = new D(x,y,d);
}
//Inizio richieste

//Prima richiesta
int somma=0;
for(int i=0;i<vett.length;i++)
somma+=vett[i].f()[13];
System.out.println("la somma delle componenti di indice 13 e':"+somma);
//Fine prima richiesta

//Seconda richiesta
float max=0;
for(int i=0;i<vett.length;i++)
{
if(vett[i] instanceof B )
if(((B)vett[i]).alfa()>max)
max=((B)vett[i]).alfa();
}
System.out.println("il max valore di alfa() e':"+max);
}
}
Qualcuno mi potrebbe aiutare a capire il motivo??Grazie


Title: Re:Esercizi Prova Laboratorio
Post by: dani89 on 22-06-2009, 19:22:13
questo comando è sbagliato: somma+=vett.f()[13];
il metodo f() restituisce un array per ogni locazione di vett, per cui devi scrivere:
Code:
for (int i=0;i<vett.length;i++)
{
int[]rif=vett[i].f();
for (int j=0;j<rif.length;j++)
{
if (j==13)
somma+=rif[j];
}
                }
in questo modo controlli solo la 13 posizione di ogni array che crei per ogni locazione di vett, spero di essere stato chiaro