Pages: [1] 2 3   Go Down
Print
Author Topic: Esercizi sull'esame di oggi 16/06/09  (Read 5056 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
dani89
Apprendista Forumista
**
Offline Offline

Posts: 254



« on: 16-06-2009, 11:57:44 »

ragazzi mi funzionano tutti e 2 in compilazione e io output ma ho un dubbio: come si inizializza l'array tridimensionale?Huh?
float[][][]A=?Huh?Huh?Huh?Huh?Huh?Huh?Huh?Huh?
se qualcuno (non so come) lo sa è pregato di postarlo grazie!
Logged
Serginho21
Guest
« Reply #1 on: 16-06-2009, 12:03:58 »

ragazzi mi funzionano tutti e 2 in compilazione e io output ma ho un dubbio: come si inizializza l'array tridimensionale?Huh?
float[][][]A=?Huh?Huh?Huh?Huh?Huh?Huh?Huh?Huh?
se qualcuno (non so come) lo sa è pregato di postarlo grazie!
Sinceramente non ci ho pensato perchè il main all'esame non lo faccio mai, quindi non ti so dire!
Logged
dani89
Apprendista Forumista
**
Offline Offline

Posts: 254



« Reply #2 on: 16-06-2009, 12:07:11 »

ovvio che non si fa il main, ma mi serve per provare la correttezza del codice
Logged
figiciotta
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 138



« Reply #3 on: 16-06-2009, 12:26:48 »

ciau, potete scrivere l'intero es per favore?? grazie Wink
Logged

Se muoio non piangere per me. Fai quello che facevo io e continuerò a vivere in te. Che Guevara.
dani89
Apprendista Forumista
**
Offline Offline

Posts: 254



« Reply #4 on: 16-06-2009, 16:19:47 »

Scrivere un metodo che prenda in input tre cubi di float e restituisca un valore fra 1,2 e 3 che indichi l'array con il massimo elemento.
Logged
callo
Forumista
***
Offline Offline

Gender: Male
Posts: 564


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


« Reply #5 on: 16-06-2009, 16:40:22 »

Io l'ho svolto così:
Code:
/*
Scrivere un metodo che prenda in input
tre cubi di float e restituisca un valore fra
1,2 e 3 che indichi l'array con il massimo
elemento.
*/
public class esercizioesame9
{
public static float metodo ( float [][][] a, float [][][]b ,float [][][]c )
{
float max=a[0][0][0];
float max1=b[0][0][0];
float max2=c[0][0][0];
for(int i=0;i<a.length;i++)
for(int j=0;j<a[0].length;j++)
for(int s=0;s<a[i].length;s++)
{
if(a[i][j][s]>max)
max=a[i][j][s];
if(b[i][j][s]>max1)
max1=b[i][j][s];
if(c[i][j][s]>max2)
max2=c[i][j][s];
}
if(max>max1 && max>max2)
return 1;
if(max1>max && max1>max2)
return 2;
if(max2>max && max2>max1)
return 3;
return 0;
}
public static void main(String args[] )
{
float[][][] cube = {
{ { 1, 2, 3 },{ 1, 2, 3 },{ 1, 2, 3 } },
{ { 1, 34, 3 },{ 1, 2, 3 },{ 1, 2, 3 } },
{ { 1, 2, 3 },{ 1, 32, 3 },{ 1, 12, 3 } }};
float[][][] cube1 = {
{ { 1, 2, 32 },{ 1, 2, 3 },{ 1, 2, 3 } },
{ { 1, 2, 3 },{ 1, 22, 3 },{ 1, 2, 3 } },
{ { 1, 2, 3 },{ 1, 2, 3 },{ 1, 2, 3 } }};
float[][][] cube2 = {
{ { 1, 2, 3 },{ 1, 2, 3 },{ 1, 2, 3 } },
{ { 1, 211, 3 },{ 1, 256, 3 },{ 1, 2, 3 } },
{ { 1, 2, 3 },{ 1, 2, 3 },{ 1, 12, 3 } }};
System.out.println(metodo(cube,cube1,cube2));
}
}
verificato e funziona......speriamo bene!!:D
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 #6 on: 16-06-2009, 18:12:27 »

Si il tuo codice funziona, però, il professore aveva detto che i cubi non aveva tutti la stessa dimensione tra loro mi pare....non so se cambia.
Logged

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

Posts: 240


"SmiiiiLe"


« Reply #7 on: 16-06-2009, 18:31:42 »

Io l'ho svolto così:
Code:
/*
Scrivere un metodo che prenda in input
tre cubi di float e restituisca un valore fra
1,2 e 3 che indichi l'array con il massimo
elemento.
*/
public class esercizioesame9
{
public static float metodo ( float [][][] a, float [][][]b ,float [][][]c )
{
float max=a[0][0][0];
float max1=b[0][0][0];
float max2=c[0][0][0];
for(int i=0;i<a.length;i++)
for(int j=0;j<a[0].length;j++)
for(int s=0;s<a[i].length;s++)
{
if(a[i][j][s]>max)
max=a[i][j][s];
if(b[i][j][s]>max1)
max1=b[i][j][s];
if(c[i][j][s]>max2)
max2=c[i][j][s];
}
if(max>max1 && max>max2)
return 1;
if(max1>max && max1>max2)
return 2;
if(max2>max && max2>max1)
return 3;
return 0;
}
public static void main(String args[] )
{
float[][][] cube = {
{ { 1, 2, 3 },{ 1, 2, 3 },{ 1, 2, 3 } },
{ { 1, 34, 3 },{ 1, 2, 3 },{ 1, 2, 3 } },
{ { 1, 2, 3 },{ 1, 32, 3 },{ 1, 12, 3 } }};
float[][][] cube1 = {
{ { 1, 2, 32 },{ 1, 2, 3 },{ 1, 2, 3 } },
{ { 1, 2, 3 },{ 1, 22, 3 },{ 1, 2, 3 } },
{ { 1, 2, 3 },{ 1, 2, 3 },{ 1, 2, 3 } }};
float[][][] cube2 = {
{ { 1, 2, 3 },{ 1, 2, 3 },{ 1, 2, 3 } },
{ { 1, 211, 3 },{ 1, 256, 3 },{ 1, 2, 3 } },
{ { 1, 2, 3 },{ 1, 2, 3 },{ 1, 12, 3 } }};
System.out.println(metodo(cube,cube1,cube2));
}
}



non riesco a capire come con 3 for ti può controllare pure i cubi b e c.. 
Logged
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #8 on: 16-06-2009, 18:42:59 »

 

E' stato un colpo basso perchè non è una cosa che abbiamo trattato nel programma, io ho scritto questo, ma il mio codice purtroppo è errato.....

Code:
public static float metodo(float[][][]A,float[][][]B,float[][][]C)
{
float max=0;
float max1=0;
float max2=0;
float max3=0;

float massimo=0;

for(int r=0; r<A.length; r++)
{
for(int c=0; c<A[r].length; c++)
{
for(int c1=0; c1<A[r][c].length; c1++)
{
max=A[r][c][c1];
if(max<A[r][c][c1])
max=A[r][c][c1];

}
}
max1=max;
}

for(int r=0; r<B.length; r++)
{
for(int c=0; c<B[r].length; c++)
{
for(int c1=0; c1<B[r][c].length; c1++)
{
max=B[r][c][c1];
if(max<B[r][c][c1])
max=B[r][c][c1];

}
}
max2=max;

}


for(int r=0; r<C.length; r++)
{
for(int c=0; c<C[r].length; c++)
{
for(int c1=0; c1<C[r][c].length; c1++)
{
max=C[r][c][c1];
if(max<C[r][c][c1])
max=C[r][c][c1];

}
}
max3=max;

}


if(max1>max2 && max1>max3)
massimo=1;
if(max2>max1 && max2>max3)
massimo=2;
if(max3>max1 && max3>max2)
massimo=3;
return massimo;
}
}
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #9 on: 16-06-2009, 18:56:39 »

Si può risolvere così:
Code:
public static int metodo (float [][][] A, float [][][] B, float [][][] C)
{
    float maxA, maxB, maxC;
   
    //in caso di parità dei massimi restituiamo 1 per convenzione
    maxA = (A.length > 0 && A [0].length > 0 && A [0][0].length > 0) ? A [0][0][0] : 1f;
    maxB = (B.length > 0 && B [0].length > 0 && B [0][0].length > 0) ? B [0][0][0] : 0f;
    maxC = (C.length > 0 && C [0].length > 0 && C [0][0].length > 0) ? C [0][0][0] : 0f;
   
    for (int x = 0; x < A.length; x++)
        for (int y = 0; y < A [x].length; y++)
            for (int z = 0; z < A [x][y].length; z++)
                if (maxA < A [x][y][z]) maxA = A [x][y][z];

    for (int x = 0; x < B.length; x++)
        for (int y = 0; y < B [x].length; y++)
            for (int z = 0; z < B [x][y].length; z++)
                if (maxB < B [x][y][z]) maxB = B [x][y][z];

    for (int x = 0; x < C.length; x++)
        for (int y = 0; y < C [x].length; y++)
            for (int z = 0; z < C [x][y].length; z++)
                if (maxC < C [x][y][z]) maxC = C [x][y][z];

    int result;
   
    if (maxA >= maxB)
        if (maxA >= maxC)
            result = 1;
        else
            result = 3;
    else if (maxB >= maxC)
        result = 2;
   
    return result;
}
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
callo
Forumista
***
Offline Offline

Gender: Male
Posts: 564


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


« Reply #10 on: 16-06-2009, 19:02:53 »

Scusate il prof non aveva detto che i cubi erano diversi ma non nelle dimensioni??nel senso il contenuto dei tre cubi era diverso mentre  la grandezza se di un cubo era 3x3x3 allora anche gli altri erano 3x3x3 mentre se di uno era 4x4x4 allora anche gli altri erano 4x4x4!!!Bo!!!Vediamo un pò come va lo scopriremo solo quando pubblicherà i risultati!!!
Logged

"A cavallina....a cavallina.....a chi era bedda quannu  curreva" [Cit.  Dal Tenerissimo via plebiscito]
Mari_C
Apprendista Forumista
**
Offline Offline

Posts: 240


"SmiiiiLe"


« Reply #11 on: 16-06-2009, 19:22:53 »

scusate potete risolvermi il dubbio se no stasera nn dormo  testate
come può con 3 for
(for(int i=0;i<a.length;i++)
      for(int j=0;j<a[0].length;j++)
      for(int s=0;s<a.length;s++))

 che ti vanno fino ad a.length controllarti anche i cubi b e c..
Logged
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #12 on: 16-06-2009, 20:14:12 »

Forse in quel modo riesce perchè le matrici hanno le stesse dimensioni...mannaggia, il mio era simile ho fatto la stupidaggine ovviamente e mi sono rovinato, ma secondo ovi il mio codice lo taglierà o qualche punto me lo darà lo stesso???
Logged

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

Gender: Male
Posts: 344


Apprezzatemi ora. Eviterete la fila


WWW
« Reply #13 on: 16-06-2009, 22:51:58 »

Il codice per scorrere una matrice cubica dovrebbe essere simile a questo:
Code:

for (int i=0;i<a.length;i++)
for (int j=0;j<a[i].length;j++)
for (int k=0;k<a[i][j].length;k++)
Logged

Collettivo SDAI

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GIT d-- s+:+ a-- C++ UL++ P L+++ E- W+++>$ N? o? K- w-- O? M V? PS++ PE- Y+ PGP- t 5? X+ R>+ tv-- b++ DI+++ D- G e h! r y+
------END GEEK CODE BLOCK-----
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #14 on: 16-06-2009, 23:08:18 »

scusate potete risolvermi il dubbio se no stasera nn dormo  testate
come può con 3 for
(for(int i=0;i<a.length;i++)
      for(int j=0;j<a[0].length;j++)
      for(int s=0;s<a.length;s++))

 che ti vanno fino ad a.length controllarti anche i cubi b e c..
Nel tuo passaggio hai dimenticato di includere il codice in un tag [CODE], perciò si è persa la [i] del terzo ciclo for.

In questo codice c'è qualcosa da precisare:
Code:
for(int i=0;i<a.length;i++)
for(int j=0;j<a[0].length;j++)
for(int s=0;s<a[i].length;s++)
Se le strutture dati sono effettivamente dei cubi (struttura geometrica con larghezza = altezza = profondità) sicuramente si avrà che a.length = a [i].length = [i][j].length, per ogni i, j validi. Di conseguenza sarebbe bastato limitare sia j sia s con a.length.

Tuttavia, siccome nella vita le cose possono andare male, in generale è bene pensare di fare un controllo più potente del perchè ovviamente s dovrebbe scorrere fino ad esattamente a[0][0].length e ovviamente in questo caso le condizioni andrebbero cambiate.

In particolare non capisco secondo quale ragionamento è stato scelto prima a.length, poi a[0].length e poi a[i].length come limiti, soprattutto il terzo non mi convince, seppur funziona (con la condizione che la matrici tridimensionali passate siano esattamente cubiche).

Rispondendo a te, in generale anche se un ciclo si ferma a a.length, nulla vieta di controllare contemporaneamente a, b e c nel corpo del ciclo for più interno.
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
Pages: [1] 2 3   Go Up
Print
Jump to: