Pages: [1] 2   Go Down
Print
Author Topic: Aiuto Esercizio Seconda Prova  (Read 4940 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Jimmy93
Matricola
*
Offline Offline

Posts: 74



« on: 01-02-2013, 11:18:07 »

Non ho capito una cosa in questo esercizio http://www.dmi.unict.it/~cincotti/prog1/file/prova2.pdf, praticamente nella classe B mi si chiede di restituire x^2, ma il costruttore(se non sbaglio) non restituisce mai niente :/ Quindi o l'istruzione si riferisce a f(), o devo sostituire x con x^2.
Help me  testate
Logged
andr3a22
Matricola
*
Offline Offline

Gender: Male
Posts: 54



« Reply #1 on: 01-02-2013, 13:23:52 »

si riferisce al metodo f(), sicuramente.
Logged

Oh Don Piano
Jimmy93
Matricola
*
Offline Offline

Posts: 74



« Reply #2 on: 02-02-2013, 11:17:42 »

E si per forza, grazie.
Ma cosa significa il secondo quesito : ) la somma dei valori restituiti da f(obj), dove obj è un oggetto di volta in volta generato con il parametro casuale  r.nextInt(47)Huh? Non l'ho capito o.O
Logged
andr3a22
Matricola
*
Offline Offline

Gender: Male
Posts: 54



« Reply #3 on: 02-02-2013, 13:24:56 »

vuol dire che devi crearti degli obj (D in questo caso) con il parametro casuale (z in questo caso) r.nextInt(47) e fare la somma dei valori restituiti di volta in volta dal metodo (che restituisce un int). Spero d'esserti stato d'aiuto.
Logged

Oh Don Piano
burgio
Matricola
*
Offline Offline

Posts: 3


« Reply #4 on: 02-02-2013, 13:37:43 »

Scusate se mi intrometto, sto facendo lo stesso esercizio, ma non riesco a capire cosa fare quando nella classe B devo andare a fare l'ultimo metodo.
qualcuno di voi lo ha già risolto?
Logged
Jimmy93
Matricola
*
Offline Offline

Posts: 74



« Reply #5 on: 02-02-2013, 13:44:45 »

Scusate se mi intrometto, sto facendo lo stesso esercizio, ma non riesco a capire cosa fare quando nella classe B devo andare a fare l'ultimo metodo.
qualcuno di voi lo ha già risolto?
Esatto proprio li non riesco a capire cosa fare, poi il resto ho fatto tutto giusto :/
Logged
Acicatena86
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 404


See full me now who neon


« Reply #6 on: 02-02-2013, 14:17:03 »

Credo che dovreste fare la somma normale tra gli z dei due oggetti e poi fare il cast ad int


Code:
public int f(D d)
  {
    return (int)(this.d.getZ()+d.getZ());
  }
Logged
Jimmy93
Matricola
*
Offline Offline

Posts: 74



« Reply #7 on: 02-02-2013, 15:52:50 »

Credo che dovreste fare la somma normale tra gli z dei due oggetti e poi fare il cast ad int


Code:
public int f(D d)
  {
    return (int)(this.d.getZ()+d.getZ());
  }
Allora 1 il tuo avatar è spettacolare XD
2 Dopo provo la tua soluzione, sinceramente non avevo pensato al this -.-"
Logged
Jimmy93
Matricola
*
Offline Offline

Posts: 74



« Reply #8 on: 02-02-2013, 17:06:08 »

Quando invoco il metodo vett.f(obj), netbeans mi dice che il metodo non ha bisogno di argomenti e che trova D.
La classe B l'ho scritta così:
Code:
public class B extends A{
    protected int y;
    private D d;
    public B(int x, int _y, double _z) {   
        super(x);
        y=_y;
        d.setZ(_z);
       
    }
    public int f(){
        return (int)(Math.pow(x, 2));
    }
   public int f(D d)
  {
    return (int)(this.d.getZ()+d.getZ());
  }
   
}

Help pls  testate
Logged
andr3a22
Matricola
*
Offline Offline

Gender: Male
Posts: 54



« Reply #9 on: 02-02-2013, 17:49:00 »

posta il main
Logged

Oh Don Piano
Jimmy93
Matricola
*
Offline Offline

Posts: 74



« Reply #10 on: 02-02-2013, 17:55:47 »

Eccolo anche se forse è un pò incasinato  pc
Code:
import java.util.*;
public class MainInd {
    public static void main(String []args){
    Random r = new Random ( 8776933);   
    A [] vett = new A [100];
    for (int i=0; i<vett.length; i++) {
    int   x = r.nextInt(10);
    int   y = r.nextInt(100);
    int   z = r.nextInt(30);
    if (r.nextInt(2)==1)   {vett[i] = new B(x, y, z);}
    else    {vett[i] = new C(x, y, z); }
    }
    //Es 1
    int a=0;
    int b=0;
    int istB=0;
    for(int i=0;i<vett.length;i++){
        a+=vett[i].f();
    }
    System.out.println(a);
    //Es 3
    int c=0;
    for(int i=0;i<vett.length;i++){
        if(!(vett[i]instanceof C))
            istB++;
    }
    System.out.println(istB);
    //Es 2
    for(int i=0;i<vett.length;i++){
    D obj= new D(r.nextInt(47));
    c+=vett[i].f(obj);       
    }
    System.out.println(c);
   }
}
Logged
Acicatena86
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 404


See full me now who neon


« Reply #11 on: 02-02-2013, 18:17:04 »

Eccolo anche se forse è un pò incasinato  pc
Code:
import java.util.*;
public class MainInd {
    public static void main(String []args){
    Random r = new Random ( 8776933);  
    A [] vett = new A [100];
    for (int i=0; i<vett.length; i++) {
    int   x = r.nextInt(10);
    int   y = r.nextInt(100);
    int   z = r.nextInt(30);
    if (r.nextInt(2)==1)   {vett[i] = new B(x, y, z);}
    else    {vett[i] = new C(x, y, z); }
    }
    //Es 1
    int a=0;
    int b=0;
    int istB=0;
    for(int i=0;i<vett.length;i++){
        a+=vett[i].f();
    }
    System.out.println(a);
    //Es 3
    int c=0;
    for(int i=0;i<vett.length;i++){
        if(!(vett[i]instanceof C))
            istB++;
    }
    System.out.println(istB);
    //Es 2
    for(int i=0;i<vett.length;i++){
    D obj= new D(r.nextInt(47));
    c+=vett[i].f(obj);        
    }
    System.out.println(c);
   }
}

Suggerimento:
 La funzione f(D d) è implementata SOLO in B.. Quindi ??

PS (Grazie Cheesy )
Logged
Jimmy93
Matricola
*
Offline Offline

Posts: 74



« Reply #12 on: 02-02-2013, 18:23:16 »

La devo usare solo per gli oggetti di tipo B?? Se così fosse come faccio?? Visto che non so a prescindere quali saranno i tipi e nemmeno con l'istanceof funziona??  testate
Logged
Acicatena86
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 404


See full me now who neon


« Reply #13 on: 02-02-2013, 18:29:39 »

La devo usare solo per gli oggetti di tipo B?? Se così fosse come faccio?? Visto che non so a prescindere quali saranno i tipi e nemmeno con l'istanceof funziona??  testate

Con instanceof controlli se è di tipo B e fai il casting Smiley
Logged
Jimmy93
Matricola
*
Offline Offline

Posts: 74



« Reply #14 on: 02-02-2013, 18:39:02 »

Tipo così:
Code:
B vettb[] = new B[100];
    for(int i=0;i<vett.length;i++){
         if(!(vett[i]instanceof C)){
              D obj= new D(r.nextInt(47));
              vettb[i]=(B)vett[i];
              c+=vettb[i].f(obj);
         }
    }
Mi sto confodendo :S mi dà errore nel metodo definito in B Q.Q
Logged
Pages: [1] 2   Go Up
Print
Jump to: