Pages: [1] 2   Go Down
Print
Author Topic: Problema  (Read 2811 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« on: 18-02-2009, 10:39:17 »

Nella prova di laboratorio del secondo turno un mio collega ha un problema,lo posto io xkè lui nn è iscritto al forum: non sà il secondo punto:trovare il massimo dell'ultimo!qualcuno mi può aiutare? [Emoticon] Asd
Logged

Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


File reality.sys corrupted, Reboot Universe? Y/N


« Reply #1 on: 18-02-2009, 10:56:17 »

ti riferisci a questa prova?
che significa trovare il massimo dell'ultimo?
cmq il secondo punto dovrebbe essere così:
Code:
float max=0;
for(int i=0;i<vett.length;i++)
{
     if(((B)vett[i]).getCoeff()>max)
          max=((B)vett[i]).getCoeff();
}
System.out.println("Il massimo valore di coeff è: "+max);
fammi sapere se funziona perchè avrei potuto sbagliare qualche stupidaggine non avendo il codice di tutte le classi ma solo l'uml.
Logged

L'odrine delle lttere dnetro una praorla non è ipmortatne, la sloa cosa ipmortatne è che la pmria e l'utlima ltteera sinao nel potso giutso. Il rseto può essree in un dsiodrine più totlae e voi ptoerte smerpe lggeree sneza porblmea.
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #2 on: 18-02-2009, 11:35:23 »

 il secondo punto di questohttp://img171.imageshack.us/img171/708/provalaboratorio2febbo2mb2.jpg
Logged

Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


File reality.sys corrupted, Reboot Universe? Y/N


« Reply #3 on: 18-02-2009, 12:06:27 »

ah ok non avevo capito il principio cmq è sempre quello
Code:
int max=0;
for(int i=0;i<vett.length;i++)
{
     if(vett[i] instanceof C)
         if(((C)vett[i]).ultimo()>max)
              max=((C)vett[i]).ultimo();
}
System.out.println("Il massimo valore di ultimo è: "+max);

Logged

L'odrine delle lttere dnetro una praorla non è ipmortatne, la sloa cosa ipmortatne è che la pmria e l'utlima ltteera sinao nel potso giutso. Il rseto può essree in un dsiodrine più totlae e voi ptoerte smerpe lggeree sneza porblmea.
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #4 on: 18-02-2009, 12:20:56 »

e il numero 1?sempre di quel foglio
Logged

Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


File reality.sys corrupted, Reboot Universe? Y/N


« Reply #5 on: 18-02-2009, 12:29:22 »

Code:
int somma=0;
for(int i=0;i<vett.length;i++)
{
     int x=r.nextInt(50);
     somma+=vett[i].f(x);
}
Logged

L'odrine delle lttere dnetro una praorla non è ipmortatne, la sloa cosa ipmortatne è che la pmria e l'utlima ltteera sinao nel potso giutso. Il rseto può essree in un dsiodrine più totlae e voi ptoerte smerpe lggeree sneza porblmea.
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #6 on: 18-02-2009, 12:36:06 »

mi spunta questo Exception in thread "main" java.lang.NullPointerException
   at E.somma(E.java:16)
   at C.f(C.java:16)
   at principale.main(principale.java:22)

ti incollo le classi E:
Code:
public class E
  {
  private float coeff;
    public E(double c)
      {
      coeff=(float)c;
      }
    public double getcoeff()
      {
      return coeff;
      }
    public int somma(int [] v)
      {
      int i=0;
      int sum=0;
      for(i=0;i<v.length-1;i++)
        {
        sum +=v[i];
        }
      return sum;
      }
  }
e C:
Code:
public class C extends B
  {
 private int [] z;
   public C(int x,double d,int q)
     {
     super(x,d);
     int [] z=new int [x];
     int i=0;
     for(i=0;i<z.length-1;i++)
       {
       z[i]=2*q+i+1;
       }
     }
   public int f(int x)
     {
     return getE().somma(z);
     }
   public int ultimo()
     {
     return z[z.length-1];
     }
   
  }
Logged

zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #7 on: 18-02-2009, 13:34:12 »

Perchè nei cicli metti:    for(i=0 ; i < v.length-1; i++) ?
1) O metti: for(i=0 ; i <= v.length-1; i++)
2) O metti: for(i=0 ; i < v.length; i++)
Altrimenti non ti legge l'ultima posizione!
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #8 on: 18-02-2009, 13:40:03 »

Classe C

Code:
class C extends B {
private int[] z;
public C(int x, double d, int q) {
super(x, d);
z = new int[x];
for (int i = 0; i < z.length; i++) {
z[i] = 2 * q + i + 1;
}
}
public int f(int x) {
return E.somma(z);
}
public int ultimo() {
return z[z.length - 1];
}
}

Classe E

Code:
class E {
private float coeff;
public E(double c) {
coeff = (float) c;
}
public double getCoeff() {
return (double) coeff;
}
public static int somma(int[] v) {
int temp = 0;
for (int i = 0; i < v.length; i++) {
temp += v[i];
}
return temp;
}
}

Nella classe E
1) Non hai fatto il casting a float per il metodo getCoeff()
2) Il metodo somma dichiaralo static
Nella classe C 
1)
Code:
int [] z=new int[x]
avevi già dichiarato z come un array di int, quindi ti basta mettere
Code:
z = new int[x]
2)
Code:
public int f(int x) { return getE().somma(z); }
Non c'è bisogno di utilizzare il getE(). Il E.somma(z) sta ad indicare la classe in cui si trova il metodo somma
 ciao

« Last Edit: 18-02-2009, 13:48:17 by zElOtO » Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
atrix0ne
Forumista
***
Offline Offline

Posts: 607


homo faber fortunae suae


« Reply #9 on: 18-02-2009, 14:15:47 »

e quindi di ke faccio la return
Logged

zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #10 on: 18-02-2009, 14:22:44 »

e quindi di ke faccio la return


Se ti riferisci a E.somma(z), passi l'array z al metodo somma, che somma tutti gli elementi, e poi ritorni la somma! Scusa il gioco di parole  boh
Code:
return E.somma(z);

« Last Edit: 18-02-2009, 17:10:29 by zElOtO » Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


File reality.sys corrupted, Reboot Universe? Y/N


« Reply #11 on: 18-02-2009, 14:42:05 »

Code:
public double getCoeff() {
return (double) coeff;
non è necessario il casting a double il compilatore lo fa in automatico perchè non c'è perdita di informazione!
Logged

L'odrine delle lttere dnetro una praorla non è ipmortatne, la sloa cosa ipmortatne è che la pmria e l'utlima ltteera sinao nel potso giutso. Il rseto può essree in un dsiodrine più totlae e voi ptoerte smerpe lggeree sneza porblmea.
zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #12 on: 18-02-2009, 17:08:52 »

Io per sicurezza lo faccio sempre così non lo dimentico mai! 
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
CollegaCaparezza
Apprendista Forumista
**
Offline Offline

Posts: 141



« Reply #13 on: 18-02-2009, 17:37:54 »

Salve colleghi
Ho un favore da chiedervi
Sapresti ricolvermi questo metodo che è stao un vero rompicapo per me
"Scrivere un metodo che prenda come input due array bidimensionali A e B di float delle stesse dimensioni n*m e restituisca il numero delle righe PESANTI. Una riga di r di A si dice pesante se contiene un numero pari di elementi ed esiste una riga p in B tale che ogni elemento di posizione dispari di r è maggiore del successivo elemento (di posizione pari) di p
Es.: r=[4,7,2,9,18,7] e p=[12,3,2,1,19,17], r è pesante perchè 4>3, 2>1 e 18>17"

Grazie a tutti per l'attenzione anche perchè non l'ho capito tanto bene  testate testate testate testate
Logged
gaernik
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 114


« Reply #14 on: 18-02-2009, 17:50:45 »

già risolto qui 
Logged
Pages: [1] 2   Go Up
Print
Jump to: