Pages: [1]   Go Down
Print
Author Topic: Questo è il compito di laboratorio  (Read 1203 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
callo
Forumista
***
Offline Offline

Gender: Male
Posts: 564


"Quanto manca alla vetta?";"Tu sali e non pensare"


« on: 23-06-2009, 12:02:11 »

Ragazzi QUI c'è il compito di laboratorio per coloro che , come me , non hanno superato la prova.......jammamuni di buona volontà a risolviamolo che è la cosa fondamentale!!  
Saluti
Logged

"A cavallina....a cavallina.....a chi era bedda quannu  curreva" [Cit.  Dal Tenerissimo via plebiscito]
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #1 on: 23-06-2009, 12:57:55 »

Grazie mille....mamma mia, se qualcuno potesse postare la terza parte....saremmo ancora più grati. 
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
callo
Forumista
***
Offline Offline

Gender: Male
Posts: 564


"Quanto manca alla vetta?";"Tu sali e non pensare"


« Reply #2 on: 23-06-2009, 13:12:22 »

Quale terza parte?oggi c'era solo il laboratorio!!
Logged

"A cavallina....a cavallina.....a chi era bedda quannu  curreva" [Cit.  Dal Tenerissimo via plebiscito]
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #3 on: 23-06-2009, 13:35:36 »

Ah vero.....hai ragione, la forza dell'abitudine..  cry
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
Blastor
Matricola
*
Offline Offline

Posts: 49


« Reply #4 on: 23-06-2009, 13:57:21 »

Code:
import java.util.*;
public class lab{
    public static void main (String[]args){
        Random r= new Random (1999888);
        Numero[] vett= new Numero[100];
        byte[] x= new byte[6];
        for(int i=0; i<vett.length;i++)
        {
            for(int j=0; j<x.length;j++)
                x[j]=(byte) (r.nextInt(9) + 1);
            if (r.nextInt(2)==1) vett[i]=new A(x);
            else vett[i]= new B(x);
        }

    int check1=0;
    int check2=0;
    for(int i=0;i<vett.length;i++){
        check1+=vett[i].cifra();
        if((vett[i]instanceof A)&&(((A)vett[i]).codice()>check2)){
           check2=((A)vett[i]).codice();

     }
    }
    System.out.println(check1 + " " + check2);
}
}

abstract class Numero{
protected byte[] cifre;
public Numero(byte[] cifre){
this.cifre=new byte[cifre.length];
this.cifre=cifre;
}

public int valore(){
int tmp=0;
for (int i=0; i<cifre.length;i++){
tmp+=((int)(cifre[i]));
if (i<cifre.length-1) tmp= tmp*10;
}
        return tmp;
}

abstract public byte cifra();
}

class A extends Numero{
public A(byte[] cifre){
super(cifre);
}
public byte cifra(){
        byte tmp=0;

        for(int i=0; i<cifre.length;i++){
            if(tmp<cifre[i]) tmp=cifre[i];
         }
           return tmp;
    }
public int c(int x){
        if(x<3){
return 5;
}
else{
if (((x>3)||(x==3))&&(x<7)){
return c(x-1);
}
else{
return c(x-2) + x;
}
}
    }
    public int codice(){
        return c(cifra());
    }
}

class B extends Numero{
    public B(byte[] cifre){
        super(cifre);
    }
    public byte cifra(){
            byte tmp=cifre[0];
            for (int i=0; i<cifre.length;i++){
                if(tmp>cifre[i]) tmp=cifre[i];
            }
            return tmp;
    }

}

ragazzi questo è quello che ho fatto io, il secondo risultato mi da 21 ed è giusto, il primo 550 invece di 522, ho controllato le istanze e risultano 50 di A e 50 di B,e facendo il debugging ho visto che il risultato è dato da (9*50)+(2*50) forse sbaglio a classare vett..boh..aspetto qualche consiglio..
« Last Edit: 23-06-2009, 14:00:38 by Blastor » Logged
pippo
Apprendista Forumista
**
Offline Offline

Posts: 150



« Reply #5 on: 24-06-2009, 10:42:54 »

 ciao Ragazzi siamo riusciti finalmente svolgere la prova laboratorio con la collaborazione di peppe89ct..
Quote
import java.util.*;

abstract class Numero
{
   protected byte[] cifre;
   public Numero(byte[] _cifre)
   {
      cifre= new byte[_cifre.length];
      for(int i=0; i<cifre.length; i++)
      cifre[ i]=_cifre[ i];
   }
   private int valore()
   {
      int res=0;
      for(int i =0;i<cifre.length;i++)
      res=res*(cifre[ i] >= 100 ? 1000 : cifre[ i]>= 10 ? 100 : 10)+cifre[ i];
      
      return res;
      
   }
   public int somma()
   {
   
      int somma=valore();
      return somma;
   }
   abstract public byte cifra();
}
class A extends Numero
{
   public A(byte[] _cifre)
   {
   super(_cifre);
   }
   public byte cifra()
   {
      return cifre[0];
   }
   private int c(int _x)
   {
      if (_x<3)
         return 5;
      else if((_x>=3)&&(_x<7))
         return c(_x-1);
      else
         return c(_x-2)+_x;
         
   }
   public int codice()
   {
      return c(cifra());
   }
}
class B extends Numero
{
   public B(byte[] _cifre)
   {
      super(_cifre);
   }
   public byte cifra()
   {
      return cifre[cifre.length-1];
   }
}

class Laboratorio
{
   public static void main (String[]args)
   {
   Numero[]vett=new Numero[100];
   byte[] x=new byte[6];
   Random r=new Random(1999888);
   for(int i=0; i<vett.length; i++)
   {
      for(int j=0; j<x.length; j++)
      x[ j]=(byte)(r.nextInt(9)+1);
      if(r.nextInt(2)==1)
         vett=new A(x);
      else
         vett=new B(x);
   }
   int sommaCifra=0;
   int maxCodice=0;
   int somma=0;
   for(int i=0; i<vett.length; i++)
   {
      sommaCifra+=vett.cifra();
      if(vett[ i] instanceof A)
         if(((A)vett[ i]).codice()>maxCodice)
            maxCodice=((A)vett[ i]).codice();
         somma+=vett.somma();
         
   }
   System.out.println(sommaCifra+" "+maxCodice+" "+somma);
        }
}
« Last Edit: 24-06-2009, 10:45:57 by pippo » Logged
Pages: [1]   Go Up
Print
Jump to: