Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    2

    [BlueJ - Java] Aiuto Esercizio Matrici

    Salve sono alle prime armi con la programmazione in java.. Siamo arrivati ad affrontare le matrici e da 2 settimane che mi sto sbattendo su esercizio..

    Ora vi elenco quello che sono riuscito a fare e vi pongo i miei dubbi, premetto che non è per scuola.. per fortuna

    L'esercizio era creare una classe Pagella con le seguenti variabili
    - una matrice (NxM) N=n_alunni M=4 // Lla matrice deve avere le colonne=4 / e le righe=in base agli alunni.
    Fare un metodo che riempe le prime 3 colonne con dei voti che vanno inseriti a random tra 1 a 10 usando voti interi senza i mezzi (è questo è il primo dubbio il random) e nella 4 colonna inserire sempre a random la condotta che va da 5 a 10 (il 2 dubbio è questo)
    - di fianco alla matrice stampare queato array di stringhe contenete i nomi degli alunni della classe..
    - e per ultimo se potevate darmi una dritta sul set e il get dei voti tipo se voglio settare un voto di un alunno una volta generata casualmente la pagella.. non so scrivo PIPPO e lui mi fa cambiare i voti di PIPPO.. [Come ambiente di lavoro uso BlueJ]
    ------------------------------------------------------------------------------------------------
    ESEMPIO:

    PIPPO 4 5 6 7
    TIZIO 2 9 5 6
    PAOLO 3 8 9 6
    MARCO 4 6 4 7

    ------------------------------------------------------------------------------------------------
    Ecco cosa sono riuscito a sviluppare fino ad ora.. Mi sono informato ma proprio sta cosa della matrice non riesco a farla

    codice:
    import java.util.*;
    import java.util.Scanner;
    
    
    public class Pagella
    {
        int n;
        String cognome_alunno;
        public  String[] Alunni;
        private int [][] Voti;
        
        /**
         * Metodo costruttore 
         * 
         */
        public Pagella(int n)
        {
            this.n = n;
            Voti = new int[n][4];
            Alunni = new String[n];
        }
        
        /**
         * Metodo per inserire il cognome degli alunni
         */
        public void set_Alunni()
        {
            int i;
            int j;
            for (i=0; i<Alunni.length; i++)
            {
                j = i+1;
                Scanner scan = new Scanner(System.in);
                System.out.println("Inserisci il cognome dell'alunno " + j + " \n---> ");
                Alunni[i] = scan.next();
            }
        }
        
        /**
         * Metodo per inserire i voti
         */
        public void set_voti(String cognome_alunno)
        {
            this.cognome_alunno = cognome_alunno;
            int i;
            int errore;
            int j = 0;
            for(i=0;i<Alunni.length;i++)
            {
                if(Alunni[i] == cognome_alunno) {
                 j = i;
                 errore = 0;
                } else { errore = 1;
            }
            if(errore == 0)
            {
            for(i=0;i<4;i++)
            {
                Scanner scan_1 = new Scanner(System.in);
                System.out.println("Inserisci il voto dell'alunno " + cognome_alunno + " \n---> ");
                Voti[j][i] = scan_1.nextInt();
           
            }
            } else {
               System.out.println("L'alunno non esiste");
            }
        }
        }
    }

    Ve ne sarei veramente grato se mi aiutaste, sono in crisi perché ho fatto esercizi più difficili però questo mi sta creando troppi problemi e non riesco a trovare una soluzione nemmeno documentandomi in rete..
    Ultima modifica di LeleFT; 09-04-2014 a 10:44 Motivo: Aggiunti i tag CODE

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    @Bisharp: quando posti del codice, mettilo dentro agli appositi tag CODE, così mantiene formattazione ed indentazione... ho corretto io il tuo post.


    Se i tuoi dubbi riguardano solo l'estrazione dei numeri random, la cosa è piuttosto semplice e hai due possibilità:

    1) Usare il metodo statico della classe Math: Math.random(). Il metodo estrae un numero double casuale compreso fra 0.0 (incluso) e 1.0 (escluso).

    2) Usare l'oggetto Random del package java.util (che viene internamente usato da Math.random()), che offre tanti metodi utili (come, ad esempio, la possibilità di estrarre un numero intero compreso fra 0 e N, dove tu definisci N, ecc).

    Due esempi pratici (uno per la prima soluzione, l'altro per la seconda), che estraggono un numero random compreso fra 0 e 10:

    Soluzione 1:

    codice:
    int numero = ((int) (Math.random() * 10000)) % 11;
    
    /* Spiegazione: estraggo un numero double fra 0.0 e 1.0
     * Lo moltiplico per 10000 così avrò probabilmente un numero maggiore di 1
     * Essendo che è un double, ne faccio il cast ad intero (così butto via la parte decimale)
     * Lo metto in modulo 11, così avrò sicuramente un numero compreso fra 0 e 10
     */

    Soluzione 2:
    codice:
    Random rnd = new Random();
    int numero = rnd.nextInt( 11 );

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    2
    Ti ringrazio per la correzione non lo sapevo e grazie mille questa parte che mi hai spiegato lo capita, ma questi numeri generati non trovo il modo di metterli dentro una matrice di n-colonne e n-righe :/

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Beh... sai come si assegna un valore ad una cella di una matrice? Mi sembra di sì, visto che già lo fai nel metodo set_voti() della classe che hai postato...

    codice:
    // x e y sono gli indici di riga e colonna
    // valore è il numero random generato con uno dei metodi visti sopra
    
    Voti[x][y] = valore;

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Tag per questa discussione

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.