10/07/2019, 11:42
Si vuole risolvere il seguente problema. Data una sequenza di interi, verificare se esiste una tripla di interi consecutivi nella sequenza che contiene almeno un intero pari ed almeno un intero negativo.Testo nascosto, fai click qui per vederloAd esempio, la sequenza $[2,2,1,5,-7]$ è un’istanza negativa del problema, in quanto la tripla $[2,2,1]$ non contiene alcun intero negativo, la tripla $[2,1,5]$ non contiene alcun intero negativo e la tripla $[1,5,-7]$ non contiene alcun pari. La sequenza $[-1,2,5,1]$ è invece un’istanza positiva del problema, in quanto la tripla $[-1,2,5]$ contiene un intero pari $(2)$ ed un intero negativo $(-1)$. Anche la sequenza $[1,1,5,-2]$ è un’istanza positiva del problema, in quanto la tripla $[1,5,-2]$ contiene un intero pari $(-2)$ ed un intero negativo (ancora $-2$).
package EsoneroSecondo;
import java.util.Scanner;
public class UnoPariUnoNegativo {
public static void main (String[] args) {
System.out.println("QUanti interi vuole introdurre?");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println("Introdurre "+n + " interi");
int[] sequenza = new int[n];
for(int i=0; i<sequenza.length; i++)
sequenza[i] = sc.nextInt();
System.out.println("Esistono tre interi consecutivi nella sequenza "
+ "di cui almeno uno è pari e almeno uno negativo? "
+ unoPariUnoNegativo(sequenza));
sc.close();
}
public static boolean unoPariUnoNegativo(int[] interi) {
boolean esistono = false;
for(int i=0; i<=interi.length-3; i++)
if( (interi[i] %2 == 0 || interi[i+1] %2 == 0 || interi[i+2] %2 == 0 ) &&
(interi[i] <0 || interi[i+1] <0 || interi[i+2] <0 ) )
esistono = true;
return esistono;
}
}
package SecondoEsonero;
import java.util.Scanner;
/* programma che legge una sequenza di interi e stampa un messaggio che
* indica se esiste una tripla di interi che ne contiene almeno uno pari ed uno negativo */
public class UnoPariUnoNegativo {
/* metodo che verifica se esistono tre elementi consecutivi in un
* array di interi di cui almeno uno è pari ed uno negativo */
public static boolean unoPariUnoNegativo(int[] seq) {
boolean pariNeg; // variabile di esistenza
int i; // variabile contatore
pariNeg = false; // tripla ancora non trovata
/* guarda tutte le triple */
i=0;
while(i<= seq.length-3 && !pariNeg)
/* tripla corrente soddisfa la proprietà? */
if((seq[i] % 2 == 0 || seq[i+1] % 2 == 0 || seq[i+2] % 2 == 0) &&
(seq[i] < 0 || seq[i+1] < 0 || seq[i+2] < 0))
pariNeg = true;
else
i++;
return pariNeg;
}
/* metodo principale */
public static void main(String[] args) {
int lunghezza; // lunghezza della sequenza
/* input */
System.out.println("Quanti interi vuoi introdurre?");
Scanner sc = new Scanner(System.in);
lunghezza = sc.nextInt();
int[] sequenza = new int[lunghezza];
for(int i=0; i<lunghezza; i++) {
System.out.print("Introduci un intero: ");
sequenza[i] = sc.nextInt();
}
/* output */
if(unoPariUnoNegativo(sequenza))
System.out.println("Vero! Esistono tre elementi consecutivi che ne contengono almeno uno pari ed uno negativo");
else
System.out.println("Falso! Non esistono tre elementi consecutivi che ne contengono almeno uno pari ed uno negativo");
sc.close();
}
}
boolean esistono = false;
for(int i=0; i<=interi.length-3; i++)
if( (interi[i] %2 == 0 || interi[i+1] %2 == 0 || interi[i+2] %2 == 0 ) &&
(interi[i] <0 || interi[i+1] <0 || interi[i+2] <0 ) )
esistono = true;
return esistono;
/* guarda tutte le triple */
i=0;
while(i<= seq.length-3 && !pariNeg)
/* tripla corrente soddisfa la proprietà? */
if((seq[i] % 2 == 0 || seq[i+1] % 2 == 0 || seq[i+2] % 2 == 0) &&
(seq[i] < 0 || seq[i+1] < 0 || seq[i+2] < 0))
pariNeg = true;
else
i++;
return pariNeg;
10/07/2019, 13:04
for(int i=0; i<=interi.length-3 && !esistono; i++)
10/07/2019, 13:14
Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000—
Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.
Powered by phpBB © phpBB Group - Privacy policy - Cookie privacy
phpBB Mobile / SEO by Artodia.