Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    programma scacchiera problema codice

    Salve ragazzi ho bisogno di aiuto......devo fare un metodo ....questo è le'sercizio da risolvere:
    Una scacchiera S di dimensione 8x8 viene rappresentata mediante un array bidimensionale di
    boolean in cui ogni posizione o è vuota (false) oppure contiene una pedina (true). Scrivere un
    metodo che prenda come parametro formale una scacchiera S, e restituisca in output un boolean che
    indichi se la scacchiera contiene almeno due pedine sulla stessa riga o sulla stessa colonna.
    il programma java che ho fatto è questo ma nn risulta xchè devo impostare una condizione di fine riga o colonna x azzerare il contatore:

    public class scacchiera{
    static boolean cercapedina(boolean [][] s){
    //dichiarazione variabili inerenti al corpo del metodo
    int contatorerighe = 0;
    int contatorecolonne = 0;
    //i cicli che scandiscono le righe della matrice
    for (int i = 0; i < s.length; i++){ //scandisce righe
    for (int j = 0; j < s[0].length; j++) //scandisce elementi riga i
    if (s[i][j] == true) contatorerighe += 1;
    }
    //i cicli che scandiscono le colonne della matrice dopo azzeramento contatore
    for (int j = 0; j < s[0].length; j++){ //scandisce le colonne
    for (int i = 0; i < s.length; i++) //scandisce elementi colonne
    if (s[i][j] == true) contatorecolonne += 1;
    }
    return (contatorerighe >= 2)||(contatorecolonne >= 2);
    }

    public static void main (String[] args){
    boolean [][] A = { {false,false,false,true},
    {false,false,false,false},
    {false,false,false,false},
    {false,false,true,false} };
    if (cercapedina(A)== true)
    System.out.println("bravo ci sei riuscito");
    else
    if (cercapedina(A) == false)
    System.out.println("ritenta sarai + fortunato");
    }
    }


    sapete dirmi qual'è la condizione per sapere se il for ha finito la riga o la colonna?
    Il computer è spettacolarmente veloce, accurato e stupido.....L'uomo è spettacolarmente lento, inaccurato e intelligente.Insieme formano una potenza oltre l'immaginazione

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: programma scacchiera problema codice

    Originariamente inviato da mattodijava
    if (s[i][j] == true) contatorerighe += 1;
    if (s[i][j] == true) contatorecolonne += 1;

    sapete dirmi qual'è la condizione per sapere se il for ha finito la riga o la colonna?
    A dire il vero lo puoi fare molto più semplice, dato che la richiesta è di controllare se ci sono almeno 2 pedine.

    Basta tenere un flag es. 'trovato'. Se trovato è false e c'è una pedina, lo metti a true. Se ad un ciclo successivo c'è una pedina e trovato è già true, allora ci sono 2 pedine, quindi puoi fare direttamente un return true; Alla fine del metodo metti un return false;

    Chiaramente il flag trovato devi settarlo a false prima di ogni ciclo innestato. Non come hai fatto nel tuo codice sopra ..... dove contatorerighe e contatorecolonne li azzeri solo all'inizio. No, così ... facevi la sommatoria su tutta la matrice!!!

    Insomma ... basta ragionare un pochino.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.