Pages: [1] 2 3   Go Down
Print
Author Topic: terza prova:chiavi  (Read 7965 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


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


« on: 31-01-2009, 11:57:47 »

Qualcuno mi può dire cosa ne pensa, se ci sono errori?
qui c'è il diagramma uml http://www.megaupload.com/it/?d=UZF4V3DZ
e questa è la parte di codice richiesta dal testo

Code:
public static void main (String[] args)
{
Chiave c=new Chiave[400];
for(int i=0;i<c.length;i++)
{
int x=(int)(Math.random()*3);
switch(x)
{
case 0:
{
c[i]=new Meccanica("Meccanica"+i,(float)(Math.random()),(float)(3+Math.random()*5),(int)(10+Math.random()*10));
break;
}
case 1:
{
c[i]=new Magnetica("Magnetica"+i,(float)(Math.random()),(float)(3+Math.random()*5),
new Informazioni((int)(Math.random*6),(char)('A'+Math.random()*3)+"1",
new Data((int)(1+Math.random()*31),(int)(1+Math.random()*12),(int)(2006+Math.random()*4))),(float)(Math.random()*6));
break;
}
case 2:
{
c[i]=new Microchip("Microchip"+i,(float)(Math.random()),(float)(3+Math.random()*5),
new Informazioni((int)(Math.random*6),(char)('A'+Math.random()*3)+"2",
new Data((int)(1+Math.random()*31),(int)(1+Math.random()*12),(int)(2006+Math.random()*4))),
new Chip(new Data((int)(1+Math.random()*31),(int)(1+Math.random()*12),(int)(2006+Math.random()*4)),new Memoria()));
break;
}
}
}
//----------------------------------------------------------------------------------------------------------------------------------------
int indice=-1;
int max=0;
for(int i=0;i<c.length;i++)
if(c[i] instanceof Meccanica)
if(((Meccanica)c[i]).getNumeroDentelli()>max)
{
max=((Meccanica)c[i]).getNumeroDentelli();
indice=i;
}
if(indice!=-1)
System.out.println("La chiave meccanica con maggior numero di dentelli è quella di indice "+iindice+" e ha numero di dentelli: "+((Meccanica)c[indice]).getNumeroDentelli());
else
System.out.println("Non ci sono chiavi meccaniche");
//------------------------------------------------------------------------------------------------------------------------------------------
Chiave[] cc=new Chiave[c.length];
for(int i=0;i<cc.length;i++)
cc[i]=c[i];
ordina(cc);
for(int i=0;i<cc.length;i++)
System.out.println(cc[i]);
//-------------------------------------------------------------------------------------------------------------------------------------------
int cont=0;
for(int i=0;i<c.length;i++)
if(c[i] instanceof Elettronica)
if(((Elettronica)c[i]).getAbilitazione().getLivelloAbilitazione()>0)
cont++;
System.out.println("Il numero di chiavi abilitate è: "+cont);
}
public static void ordina(Chiave[] a)
{
for(int i=0;i<a.length-1;i++)
{
int min=i;
for(int j=i+1;j<a.length;j++)
if(a[j].getCosto()<a[min].getCosto())
min=j;
scambia(a,min,i);
}
}
public static void scambia(Chiave[] a,int b,int c)
{
Chiave temp=a[b];
a[b]=a[c];
a[c]=temp;
}

P.S. come fate a mettere i link direttamente nelle parole??
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.
gaernik
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 114


« Reply #1 on: 31-01-2009, 13:36:09 »

scrivi
Code:
[url=www.google.it]parola[/url]

 
Logged
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


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


« Reply #2 on: 31-01-2009, 13:37:00 »

grazie 
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.
TheSpecialOne
Apprendista Forumista
**
Offline Offline

Posts: 232



« Reply #3 on: 31-01-2009, 17:36:29 »

Qualcuno mi può dire cosa ne pensa, se ci sono errori?
qui c'è il diagramma uml http://www.megaupload.com/it/?d=UZF4V3DZ
e questa è la parte di codice richiesta dal testo

Code:
public static void main (String[] args)
{
Chiave c=new Chiave[400];
for(int i=0;i<c.length;i++)
{
int x=(int)(Math.random()*3);
switch(x)
{
case 0:
{
c[i]=new Meccanica("Meccanica"+i,(float)(Math.random()),(float)(3+Math.random()*5),(int)(10+Math.random()*10));
break;
}
case 1:
{
c[i]=new Magnetica("Magnetica"+i,(float)(Math.random()),(float)(3+Math.random()*5),
new Informazioni((int)(Math.random*6),(char)('A'+Math.random()*3)+"1",
new Data((int)(1+Math.random()*31),(int)(1+Math.random()*12),(int)(2006+Math.random()*4))),(float)(Math.random()*6));
break;
}
case 2:
{
c[i]=new Microchip("Microchip"+i,(float)(Math.random()),(float)(3+Math.random()*5),
new Informazioni((int)(Math.random*6),(char)('A'+Math.random()*3)+"2",
new Data((int)(1+Math.random()*31),(int)(1+Math.random()*12),(int)(2006+Math.random()*4))),
new Chip(new Data((int)(1+Math.random()*31),(int)(1+Math.random()*12),(int)(2006+Math.random()*4)),new Memoria()));
break;
}
}
}
//----------------------------------------------------------------------------------------------------------------------------------------
int indice=-1;
int max=0;
for(int i=0;i<c.length;i++)
if(c[i] instanceof Meccanica)
if(((Meccanica)c[i]).getNumeroDentelli()>max)
{
max=((Meccanica)c[i]).getNumeroDentelli();
indice=i;
}
if(indice!=-1)
System.out.println("La chiave meccanica con maggior numero di dentelli è quella di indice "+iindice+" e ha numero di dentelli: "+((Meccanica)c[indice]).getNumeroDentelli());
else
System.out.println("Non ci sono chiavi meccaniche");
//------------------------------------------------------------------------------------------------------------------------------------------
Chiave[] cc=new Chiave[c.length];
for(int i=0;i<cc.length;i++)
cc[i]=c[i];
ordina(cc);
for(int i=0;i<cc.length;i++)
System.out.println(cc[i]);
//-------------------------------------------------------------------------------------------------------------------------------------------
int cont=0;
for(int i=0;i<c.length;i++)
if(c[i] instanceof Elettronica)
if(((Elettronica)c[i]).getAbilitazione().getLivelloAbilitazione()>0)
cont++;
System.out.println("Il numero di chiavi abilitate è: "+cont);
}
public static void ordina(Chiave[] a)
{
for(int i=0;i<a.length-1;i++)
{
int min=i;
for(int j=i+1;j<a.length;j++)
if(a[j].getCosto()<a[min].getCosto())
min=j;
scambia(a,min,i);
}
}
public static void scambia(Chiave[] a,int b,int c)
{
Chiave temp=a[b];
a[b]=a[c];
a[c]=temp;
}

P.S. come fate a mettere i link direttamente nelle parole??

ma la classe scorrimento era fondamentale?
ho notato, provando a rifare l'esercizio seguendo il tuo uml, che la classe scorrimento si possa eliminare, inserendo come parametro la lunghezza nella superclasse!
almeno penso che si possa fare anche cosi, cmq è molto complicato questo esercizio!!!
spero ci capiti qualcosa di piu facile, ci sono troppe classi qui!!
Logged
Mito
Matricola
*
Offline Offline

Posts: 56


« Reply #4 on: 31-01-2009, 17:51:59 »

ma la classe scorrimento era fondamentale?
ho notato, provando a rifare l'esercizio seguendo il tuo uml, che la classe scorrimento si possa eliminare, inserendo come parametro la lunghezza nella superclasse!
almeno penso che si possa fare anche cosi, cmq è molto complicato questo esercizio!!!
spero ci capiti qualcosa di piu facile, ci sono troppe classi qui!!

Non è fondamentale ai fini del funzionamento dell'esercizio; però il testo la richiede (citazione: Sia le chiavi elettroniche che quelle meccaniche sono chiavi a scorrimento...).

Sicuramente è l'esercizio di Terza Parte più completo tra quelli in circolazione (non tanto per il numero di classi da implementare quanto per la "difficoltà" dell'esercizio stesso).

L'unico "nemico", a parer mio, nello svolgimento di questa Terza Parte è il tempo!  testate
« Last Edit: 31-01-2009, 17:56:04 by Mito » Logged
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


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


« Reply #5 on: 31-01-2009, 17:57:59 »

Quanto tempo c'è?
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.
Mito
Matricola
*
Offline Offline

Posts: 56


« Reply #6 on: 31-01-2009, 18:03:26 »

Quanto tempo c'è?

Presumo 1 ora e mezza oppure 1 ora.

Code:
int cont=0;
for(int i=0;i<c.length;i++)
if(c[i] instanceof Elettronica)
if(((Elettronica)c[i]).getAbilitazione().getLivelloAbilitazione()>0)
cont++;
System.out.println("Il numero di chiavi abilitate è: "+cont);

Ho dato un'occhiata veloce al codice (...e all'UML) ma questo getLivelloAbilitazione() dove lo hai implementato?
« Last Edit: 31-01-2009, 18:06:39 by Mito » Logged
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


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


« Reply #7 on: 31-01-2009, 18:10:16 »

ops  doveva essere getLivelloSicurezza()  [Emoticon] Asd  o forse no??aspetta  testate
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.
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


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


« Reply #8 on: 31-01-2009, 18:12:38 »

  credo che avevo interpretato male...come si fa a vedere quali chiavi sono abilitate??
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.
Mito
Matricola
*
Offline Offline

Posts: 56


« Reply #9 on: 31-01-2009, 18:30:20 »

credo che avevo interpretato male...come si fa a vedere quali chiavi sono abilitate??

Non ho capito del tutto la frase si conti il numero delle chiavi elettroniche abilitate.

Se con questa frase il testo richieda di contare il numero di Chiavi Elettroniche (quindi Magnetiche e Microchip) abilitate (cioè che contengano informazioni relative all'abilitazione) allora un controllo del tipo:

Code:
if(((Elettronica)c[i]).getAbilitazione().getLivelloSicurezza()>0)

oppure

if(((Elettronica)c[i]).getAbilitazione().getZona()>0)

...è sufficiente.

Io ho capito così. Forse ho interpretato male la richiesta...?


« Last Edit: 31-01-2009, 18:31:55 by Mito » Logged
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


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


« Reply #10 on: 31-01-2009, 18:34:51 »

come al solito l'ambiguità lessicale di Cincotti fa la sua comparsa in grande stile  [Emoticon] Asd
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.
Fr3d3R!K
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.463



« Reply #11 on: 31-01-2009, 22:48:00 »

a me la frase si conti il numero delle chiavi elettroniche abilitate non sembra ambigua, anzi piuttosto chiara . Bisogna controllare quante chiave elettroniche sono state abilitate tramite l'apposito metodo.
Logged

Search Button, CODE Tag, Google & Italian language are your friends! Use Them!
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


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


« Reply #12 on: 01-02-2009, 07:53:16 »

  non c'è un metodo abilita..o perlomeno non diceva che serviva  testate
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.
Fr3d3R!K
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.463



« Reply #13 on: 01-02-2009, 09:54:51 »

ho letto il testo e nel punto in cui dice
Quote
Le chiavi elettroniche (magnetiche e microchip) contengono le informazioni relative all’abilitazione (livello di sicurezza, zona di abilitazione, data scadenza) delle stesse.
In questa classe si può implementare il metodo relativo alla zona di abilitazione (on/off).
P.S. Vivynz: nel tuo uml la variabile peso è dichiarata public, suppongo sia un errore di battitura in quanto penso volevi metterla private per poi recuperarla con il metodo getPeso() che hai scritto...
Logged

Search Button, CODE Tag, Google & Italian language are your friends! Use Them!
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


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


« Reply #14 on: 01-02-2009, 15:51:37 »

si bè infatti ok!!per la variabile peso si sicuramente ho dimenticato di cambiarla e metterla private come tutte le altre 
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.
Pages: [1] 2 3   Go Up
Print
Jump to: