Salve a tutti gli utenti; apro questo nuovo topic per segnalare una tipologia di errore (di natura logica) che non tarda mai a comparire durante parecchi dei miei abituali esercizi.
Nonostante il compilatore non sembri segnalarmi eventuali errori relativi al registro sintattico usato per scrivere, l'errore che compare,di recente ormai a tempo di esecuzione, comincia ad innervosirmi non poco.
L'errore viene evidenziato quando, immettendo i dataset in input che non comportano la verifica della condizione del ciclo di iterazione, si ha un risultato differente da quello atteso in output.
Non saprei scendere più nel dettaglio di quanto non lo abbia fatto con queste parole, e se come penso, non foste riusciti a capire quale sia l'effettivo problema, vi invito caldamente a prendere il codice ed eseguirlo, sul vostro calcolatore, con qualsiasi possibile dataset immaginabile così da poter comprendere a pieno l'errore che sto cercando di segnalare.
Mi appello dunque nuovamente al vostro saggio consiglio sperando di venirne a capo.
Essendo ricorrente in più esercizi sono stato costretto a convenzionare il titolo di questo topic in modo molto generico, non potendo scendere più nel particolare, indi per cui sarò costretto ad elencare la specifica del problema per ogni pezzo di codice postato qui sotto.
Grazie Molte in anticipo. Buona Serata.
1) ARRAY CRESCENTE:
/*1)Specifica del problema
Input: Array di interi a
Precondizioni: a non nullo e non vuoto
Output: b booleano
Postcondizioni: b e’ vero se la sequenza di elementi di a è ordinata in modo crescente
E’ un problema di Verifica Esistenziale.*/
import fiji.io.*;
class ArrayCrescente {
public static void main(String[] args) {
System.out.println("di quanti elementi vuoi che sia composto il tuo array?");
final int ea = Lettore.in.leggiInt();
int[] a = new int[ea];
System.out.println("scrivi" + " " +ea+ " " + "interi, gli elementi della tua sequenza");
for (int i = 0; i<ea; i++) {
a[i] = Lettore.in.leggiInt();
System.out.println();
}
Crescente(a);
}
public static boolean Crescente(int[] a) {
int i;
boolean crescente;
for(i=0; i<a.length-1; i++) {
if (a[i] < a[i+1]) {
crescente = true;
}
else {
crescente = false;
}
}
if (crescente = true) {
System.out.println("La sequenza è ordinata in modo crescente");
}
else {
System.out.println("La sequenza non è ordinata in modo crescente");
}
return crescente;
}
}
2) ADIACENTI DIVERSI:
/* 1)Specifica del problema
Input: stringa s
Precondizioni: s non nulla e non vuota
Output: b booleano
Postcondizioni: b e’ vero se tutti i caratteri adiacenti della stringa s sono differenti.
E’ un problema di verifica esistenziale. */
import fiji.io.*;
class AdiacentiDiversi {
public static void main(String[] args) {
System.out.println("Immetti una stringa: ");
String s = Lettore.in.leggiLinea();
System.out.print("");
adiacentidiversi(s);
}
public static boolean adiacentidiversi(String s) {
int i = 0;
boolean adiacenti = false;
while (i < 1) {
adiacenti = false;
i++;
}
for (i = 1; i<=s.length()-1; i++)
if( s.charAt(0) == s.charAt(i)) {
adiacenti = true;
}
else {
adiacenti = false;
}
if (adiacenti = true) {
System.out.println("non tutti i caratteri adiacenti della stringa s sono differenti");
}
else {
System.out.println("tutti i caratteri adiacenti della stringa s sono differenti");
}
return adiacenti;
}
}
3) SUFFISSO:
/* 1)Specifica del problema
Input: stringhe s,t
Precondizioni: s,t non nulle e non vuote
Output: b booleano
Postcondizioni: b e’ vero se la stringa t è un suffisso della stringa s.
E’ un problema di verifica esistenziale. */
import fiji.io.*;
public class Suffisso {
public static void main (String[] args) {
System.out.println("scrivi le due stringhe che vuoi scandire: ");
String s = Lettore.in.leggiLinea();
String t = Lettore.in.leggiLinea();
suffisso(s,t);
}
public static boolean suffisso(String s, String t) {
boolean suffisso=false;
int i; //contatore
if (s.length() >= t.length()) {
for(i=t.charAt(0); i<=t.length(); i++)
if (t.charAt(i) == s.charAt(i)) {
suffisso=true;
}
}
else {
suffisso=false;
}
if (suffisso=true) {
System.out.println("La stringa T è un suffisso della stringa S");
}
else {
System.out.println("La stringa T non è un suffisso della stringa S");
}
return suffisso;
}
}
4) CARATTERI UGUALI:
/* Specifica del problema
Input: stringa s
Precondizioni: s non nulla e non vuota
Output: b booleano
Postcondizioni: b e’ vero se tutti i caratteri della stringa data sono uguali
E’ un problema di verifica universale. */
import fiji.io.*;
class CaratteriUguali {
public static void main(String[] args) {
System.out.println("Inserisci la stringa su cui vuoi avviare la scansione: ");
String s = Lettore.in.leggiLinea();
TuttiUguali(s);
}
public static boolean TuttiUguali(String s) {
int i;
boolean tuttiuguali=true;
for (i = 0; i<s.length()-1; i++) {
if (s.charAt(i) == s.charAt(i+1)) {
tuttiuguali = true;
}
else {
tuttiuguali = false;
}
if (tuttiuguali = true) {
System.out.println("tutti i caratteri della stringa data sono uguali;");
}
if (tuttiuguali = false) {
System.out.println("non tutti i caratteri della stringa data sono uguali");
}
}
return tuttiuguali;
}
}