Risoluzione esercizio

di il
1 risposte

Risoluzione esercizio

Buonasera a tutti. non riesco a risolvere un esercizio, o meglio ancora, ho scritto un codice ma non funziona come credevo. l'esercizio è:

"si scriva un algoritmo per un semplice gioco che chieda di indovinare un codice numerico di 5 cifre. quando l'utente scrive la risposta, il programma restituisce due valori: il numero di cifre al posto giusto e la somma di queste cifre. per esempio, se il codice segreto è 53840 e l'utente ipotizza 83241, le cifre 3 e 4 sono al posto giusto. il programma perciò restituirebbe in output i numeri 2(cifre corrette) e 7(somma). si permetta all'utente di provare per un numero prefissato di volte."

questo è il codice che ho scritto io:

import java.util.Scanner;

public class Esercizio3 {
public static void main(String[] args) {
final int numero = 12345;
int numeroIns = 0;
int[] numeroF = new int[5];


int[] numeroInserito = new int[5];
int sentinella = 0;
int i = 0;

int somma = 0;
int sommacifre = 0;
Scanner input = new Scanner(System.in);
System.out.println("hai 5 possibilità");
numeroF[0] = 1;
numeroF[1] = 2;
numeroF[2] = 3;
numeroF[3] = 4;
numeroF[4] = 5;
do {
System.out.println("inserisci un numero di 5 cifre");
numeroIns = input.nextInt();
System.out.println("ripeti ogni cifra seguita da enter");
numeroInserito[0] = input.nextInt();
numeroInserito[1] = input.nextInt();
numeroInserito[2] = input.nextInt();
numeroInserito[3] = input.nextInt();
numeroInserito[4] = input.nextInt();

if (numeroIns == numero) {
System.out.println("hai indovinato il numero!!!");
sentinella = 1;
}
else {

for (i = 0; i < 5; i++) {
if (numeroF == numeroInserito) {
somma = somma + 1;
sommacifre = sommacifre + numeroInserito;
i++;
} else {
i++;
}
}
System.out.println("la somma delle cifre indovinate è " + sommacifre);
System.out.println("hai indovinato " + somma + " cifre");
}

} while (sentinella == 0);
input.close();
}
}


spero mi possiate aiutare, grazie!

1 Risposte

  • Re: Risoluzione esercizio

    Devi farlo per forza con gli array?
    Ho fatto questo io:
      int lunghezza = 5;
            //String soluzione = "12345";
            String soluzione = "";
            for (int i = 0; i < lunghezza; i++) {
                soluzione += "0123456789".toCharArray()[new Random().nextInt("0123456789".toCharArray().length)];
            }
            System.out.println(soluzione);
            int tentativi = 0;
            String tentativo = null;
            boolean finito = false;
            while (!finito) {
                try {
    
                    int numeri_indovinati = 0;
                    int somma = 0;
                    tentativo = JOptionPane.showInputDialog("Inserisci " + lunghezza + " cifre.");
    
                    for (int i = 0; i < soluzione.length(); i++) {
    
                        if (tentativo.charAt(i) == soluzione.charAt(i)) {
                            numeri_indovinati++;
                            somma += Integer.parseInt(tentativo.charAt(i) + "");
                        }
    
                    }
                    System.out.println("Hai indovinato " + numeri_indovinati + " numeri.");
                    System.out.println("La somma dei numeri indovinati è di " + somma);
                    if (numeri_indovinati == soluzione.length()) {
                        System.out.println("Soluzione: " + soluzione + " in " + tentativi + " tentativi.");
                        finito = true;
                    }
                    tentativi++;
                } catch (Exception e) {
                    //nel caso una persona inserisca 4 cifre al posto che 5 ad esempio.
                }
    
            }
    
    È un po' incasinato, spero si capisca.
Devi accedere o registrarti per scrivere nel forum
1 risposte