Pages: [1]   Go Down
Print
Author Topic: Difficoltà esercizio prova sui metodi aprile  (Read 1189 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« on: 27-04-2009, 19:52:56 »

L'esercizio è questo:

Quote
/*Scrivere un metodo che prenda in input una matrice A di float, e restituisca un boolean che indichi se la somma degli elementi del perimetro di A è maggiore del massimo
elemento in A*/

Però a parte il massimo della matrice che so calcolare, non riesco a pensare come organizzare i cicli per calcolare il perimetro......
Logged

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

Posts: 1.079

Ogni cosa da me scritta è da intendersi come opinione personale e non come dato di fatto. Anche le eventuali dimostrazioni matematiche da me scritte saranno opinioni personali e quindi dovranno venire dimostrate da una terza parte di fiducia


WWW
« Reply #1 on: 27-04-2009, 21:25:26 »

Fai 4 cicli... uno scorre A[0][j], l'altro scorre A
  • , poi A[max_r][j] e A[max_c]
Logged

There are some OO programming languages. I will create the first -_-' language.

LtWorf
LtWorf
Forumista Esperto
****
Offline Offline

Posts: 1.079

Ogni cosa da me scritta è da intendersi come opinione personale e non come dato di fatto. Anche le eventuali dimostrazioni matematiche da me scritte saranno opinioni personali e quindi dovranno venire dimostrate da una terza parte di fiducia


WWW
« Reply #2 on: 27-04-2009, 21:26:38 »

Formattazioni strane del forum... Ci siamo capiti spero :-S
Logged

There are some OO programming languages. I will create the first -_-' language.

LtWorf
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #3 on: 27-04-2009, 21:41:57 »

Mah....a dire la verità...no.....potresti risfidare la sorte dell'impaginazione?  pray
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 #4 on: 27-04-2009, 22:53:23 »

Fai 4 cicli... uno scorre A[0][j], l'altro scorre A
  • , poi A[max_r][j] e A[max_c]
La formattazione è corretta: tu hai scritto [i] che è il tag d'apertura di un testo in corsivo  boh.
Come a dire: usa il tag CODE  ok la prossima volta!

Studia questo codice, guitarplaying:
Code:
public static boolean metodo (float A [][])
{
float max = A [0][0];
float somma_perimetro = 0;

//calcola il max
for (int i = 0; i < A.length; i++)
for (int j = 0; j < A [i].length; j++)
if (A [i][j] > max) max = A [i][j];

//calcola la somma degli elementi del perimetro:
//prima calcola la somma delle righe superiore e inferiore (lati orizzontali) del perimetro
for (int i = 0; i < A [0].length; i++)
somma_perimetro += A [0][i] + A [A.length - 1][i];

//poi calcola la somma delle colonne sinistra e destra (lati verticali) del perimetro
for (int i = 0; i < A.length; i++)
somma_perimetro += A [i][0] + A [i][A [i].length - 1];

//infine restituisce il valore booleano dato dal confronto tra somma del perimetro e massimo
return somma_perimetro > max;
}
Ciao ciao .
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
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #5 on: 27-04-2009, 23:13:37 »

Si mi quadra, non avevo pensato alla cosa di fare la somma dei lati insieme, che ###@@, ma una cosa sola non mi quadra, sentivo dire a suo tempo che alcune persone in questo esercizio lamentavano l'errore di aver dimenticato nel calcolo del perimetro che, se come in questo caso si è prima trovata la somma dei lati orizzontali, in quelli verticali ci si deve ricordare di togliere i quattro quadratini ai vari spigoli, quindi come mai scrivi:

Quote
//poi calcola la somma delle colonne sinistra e destra (lati verticali) del perimetro
   for (int i = 0; i < A.length; i++)
      somma_perimetro += A
  • + A [A .length - 1];

la riga non dovrebbe partire dall'indice 1 e poi arrestarsi a length -1???

Grazie come sempre.
« Last Edit: 27-04-2009, 23:36:36 by guitarplaying » 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 #6 on: 27-04-2009, 23:27:58 »

Si mi quadra, non avevo pensat oalla cosa di fare la somma dei lati insieme, che ###@@, ma una cosa sola non mi quadra, sentivo dire a suo tempo che alcune persone in questo esercizio lamentavano l'errore di aver dimenticato nel calcolo del perimetro che, se come in questo caso si è prima trovata la somma dei lati orizzontali, in quelli verticali ci si deve ricordare di togliere i quattro quadratini ai vari spigoli, quindi come mai scrivi:

Quote
//poi calcola la somma delle colonne sinistra e destra (lati verticali) del perimetro
   for (int i = 0; i < A.length; i++)
      somma_perimetro += A
  • + A [A .length - 1];

la riga non dovrebbe partire dall'indice 1 e poi arrestarsi a length -1???

Grazie come sempre.
Troppa raggione hai, troppissima! Anzi mi è venuta pure a me una pensata ancora più subdola : gestire il caso in cui la matrice sia formata da una sola colonna oppure ("o" inclusivo) da una sola riga.

Ora va bene (con l'ipotesi al primo rigo):
Code:
//ipotesi: A contenga almeno 1 elemento e tutte le righe di A abbiano la stessa lunghezza (array bidimensionale NON frastagliato, cioè)
public static boolean metodo (float A [][])
{
float max = A [0][0]; //assegnazione possibile per via della ipotesi 3 righe sopra
float somma_perimetro  = 0;

//calcola il max, esattamente come nella versione precedente
for (int i = 0; i < A.length; i++)
for (int j = 0; j < A [i].length; j++)
if (A [i][j] > max) max = A [i][j];

if (A.length == 1)
for (int i = 0; i < A [0].length; i++)
somma_perimetro += A [0][i];
else if (A [0].length == 1)
for (int i = 0; i < A.length; i++)
somma_perimetro += A [i][0];
else
{
//prima calcola la somma delle righe superiore e inferiore (lati orizzontali) del perimetro (angoli INCLUSI)
for (int i = 0; i < A [0].length; i++)
somma_perimetro += A [0][i] + A [A.length - 1][i]; //qui "-1" serve perché è l'indice max in un array

//poi calcola la somma delle colonne sinistra e destra (lati verticali) del perimetro (angolo ESCLUSI)
for (int i = 1; i < A.length - 1; i++) //qui "-1" nella condizione serve (come anche l'inizializzazione i=1) per non contare gli angoli
somma_perimetro += A [i][0] + A [i][A [i].length - 1]; //qui "-1" serve perché è l'indice max in un array
}

//infine restituisce il valore booleano dato dal confronto tra somma del perimetro e massimo
return somma_perimetro > max;
}
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
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #7 on: 27-04-2009, 23:39:23 »

Bene, sono contento, domani ci darò un'occhiata, allora grazie mille di nuovo!!!
Logged

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

Posts: 1.079

Ogni cosa da me scritta è da intendersi come opinione personale e non come dato di fatto. Anche le eventuali dimostrazioni matematiche da me scritte saranno opinioni personali e quindi dovranno venire dimostrate da una terza parte di fiducia


WWW
« Reply #8 on: 29-04-2009, 08:11:07 »

A meno male che c'è reversengineer :-)
Logged

There are some OO programming languages. I will create the first -_-' language.

LtWorf
Pages: [1]   Go Up
Print
Jump to: