Ciao!
Innanzitutto: non so se il titolo del post vada bene..il testo dell'esercizio che vorrei proporre è lunghetto e difficile da riassumere. Se il titolo non va bene, mi scuso in anticipo!
Questo esercizio è preso da una prova d'esame recente (esame che anch'io dovrò sostenere prima o poi). Vi posto il testo e il mio tentativo di risoluzione (tentativo, temo, miseramente fallito).
Si realizzi un metodo avente come parametro formale un array di interi A che restituisca come risultato un boolean. Il risultato deve essere true SE E SOLO SE ESISTE ALMENO un indice i tale che A[i] soddisfi le seguenti due proprietà:
-per ogni 0<= j < i vale che A[j] < A[i] OPPURE A[j]= 100
- per ogni i < k < A.length vale che A[k] è pari
RISOLUZIONE
Fino a qui c'è qualcosa di giusto?codice:public boolean met (int A[]) { /* Io ho pensato di inizializzare da subito una variabile boolean falsa; poi il valore viene modificato in base al risultato dei controlli su k e j */ boolean b = false; /* Nel testo non è specificato, ma, conoscendo il prof penso di dover considerare anche i casi particolari nel seguente modo: se i ha indice 0, cioè non ha alcun j alla sua sinistra, considero la condizione du j come verificata. devo quindi valutare solo la condizione sui k. Se c'è un qualche k per cui la condizione non è verificata, allora il while si interrompe e passo a scorrere l'indice i. */ int i = 0; int k = 1; boolean h = true; while (k < A.lenght & h == true) { if (A[k]%2 == 0) { h = true; k = k+1; } else {h= false;} b = h; if (b) {return b;} /* se tutti i k dopo i=0 verificano la condizione, ho trovato l'i che cercavo. Il metodo risponde e termina. Altrimenti prosegue valutando gli altri i, j e k. */ else { int i = 1; int j = 0; boolean f = true; while ( j<i & f==true) { if ( A[j] < A[i] | A[j] == 100) { } else { f = false;} j = j + 1; } if (f == true) { int k = i + 1; boolean c = true; while (k < A.length & c == true) { if (A[k]%2 == 0) { } else { c= false; } K = k + 1; } ... } /* però a questo punto mi sto un po' incartando...cioè: prima cosa: mi sa che non è ne formalmente corretto nè funzionante. seconda cosa : anche ammettendo che la prima parte vada bene, ora dovrei fare anche il secondo caso particolare, quello cioè con i= A.length -1. Ma dove lo metto? terza cosa: ora dovrei far sì che non appena entrambe le condizioni si verifichino insieme, il metodo termina rispondendo true. */
Potete aiutarmi?
Grazie

). Vi posto il testo e il mio tentativo di risoluzione (tentativo, temo, miseramente fallito).
Rispondi quotando