Newsgroup: it.comp.java
Titolo: Minimo comune multiplo

Ciao ragazzi,
sono uno studente universitario, sto studiando Java che rappresenta il
giochino sul quale si basa l'esame di programmazione, che č mirato a vedere
se abbiamo acquisito le conoscenze di base della programmazione.
Ho sclerato per una settimana, ma in vano, sulla realizzazione di un
semplice programma che calcola il minimo comune multiplo tra 2 numeri dati
in input.
Potreste pastarmi per favore il codice completo di un programma che fa ciň
che mi serve (tanto sono poche righe) cosě posso vedere dove sbaglio per
favore?
L'algoritmo che uso č quello di Euclide.

 favore?
Posta la tua soluzione, eventualmente se trovi qualcuno disposto ad 
aiutarti, avrai suggerimenti opportuni per correggere i tuoi errori.
Senza un minimo di impegno, non si ottiene nulla.
-- 
Sergio Pedone
GNU/Linux Slackware
Java

 giochino sul quale si basa l'esame di programmazione,
Speriamo che questa sessione finisca presto.
Ciao
Matteo
-- 
chi sono e soprattutto chi non sono:
http://www.ilnomedeldominio.it
un piccolo programma per studenti universitari:
http://inutility.ilnomedeldominio.it/imsv/

Ciao Sergio, beh di fatti ieri avrei dovuto pastare un minimo di codice, ma
ero in preda ad una crisi di nervi...
Se l'esame fosse stato fatto utilizzando il C non avrei dovuto sforzarmi più
di tanto... Giochicchiando con Linux e avendo letto 2 libri sul C ( K&R e
T.N. King) non me la cavavo malaccio. Purtroppo per quanto riguarda il Java
non riesco a trovare nessun libro che ha un approccio come i su mensionati
libri per cui mi sto trovando un po' in difficoltà... Thinking in java l'ho
trovato pressapochistico... Un altro libro della jackson fa esempi su e
sempi teorici: (le puntine da disegno che rappresentano dei fattorini, un
ragazzo che lava i piatti in occasione del thanks giving day) ma sulla parte
tecnica, ad esempio come gestire le eccezioni nel dettaglio c'è poco e
niente...
Ho comprato un libro di Ivor Horton, ma le classi da lui utilizzate non sono
standard da quello che ho capito, dal momento che ho degli errori di
espressione non valida e robe del genere.
Andando a Feltrinelli ho trovato Fondamenti di Java 2 di Herbert Schildt, lo
sto trovando decisamente meglio degli altri 3 libri. Benchè Java sia solo il
giochino su cui si basa la verifica delle nostre conoscenze di base della
programmazione, il voto tiene conto di come strutturiamo gli algoritmi e
della loro "bellezza stilistica" (non so nemmeno io come definirla
esattamente)...
Detto questo ecco uno dei 2 algoritmi che avevo realizzato:
import java.io.*;
class Eserc4{
  public long getIntFromConsole() throws Exception {
    String lineInput;
    InputStreamReader keyboard;
    BufferedReader lineKeyboard;
    keyboard = new InputStreamReader(System.in);
    lineKeyboard = new BufferedReader(keyboard);
    System.out.print("Insert a number: ");
    lineInput = lineKeyboard.readLine();
    return Long.parseLong(lineInput);
  }
  public static void main(String arg[]) throws Exception {
    Eserc4 eserc = new Eserc4();
    long a = eserc.getIntFromConsole();
    long b = eserc.getIntFromConsole();
    long c = a * b;
    long r = a % b;
    do {
       r=a%b;
      a = b;
      b = r;}
    while (r==0);
  System.out.println("The least common multiple is: " + c/a);}
"Sergio Pedone" <sergio...@NOSPAMaliceposta.it> ha scritto nel messaggio
news:ZH0Mb.90164$_P.33...@news4.tin.it...


     while (r==0);
Credo che sia while(r!=0).
Già che ci sono vorrei aggiungere un paio di cose:
public long getIntFromConsole() throws Exception {
getIntFromConsole e restituisce un long?
invece di throws Exception sarebbe meglio thrws IOException,
NumberFormatException
(mi pare che ci siano queste due) altrimenti il client di questo metodo non
sa cosa aspettarsi.
 public static void main(String arg[]) throws Exception {
                                       ^^^^^^^^^^^^^^^^^^
che è come dire: "questo programma puo' andare in crash in tutti i modi
possibili" :)
Forse è il caso di acchiappare qualche eccezione.


 ha scritto nel messaggio
news:RH8Mb.32369$Jw2....@tornado.fastwebnet.it...


 algoritmo, così ho un punto di riferimento per gli altri esercizi.
import java.io.*;
public class Algoritmo {
 
    /* questa classe non deve essere istanziata, è solo un contenitore di 
     *metodi statici */
 
    private Algoritmo() {
        // sostituisce il costruttore di default
    }
 
    /** Chiede un intero all'utente e lo legge dalla tastiera
     * @return L'intero letto
     */    
    private static int getInt() throws IOException, NumberFormatException {
 
        //secondo me crei inutilmente un oggetto ad ogni invocazione
        BufferedReader keyboard = new BufferedReader (new
InputStreamReader(System.in));
 
        System.out.print("inserisci un numero: ");
        System.out.flush();
 
        return Integer.parseInt(keyboard.readLine());
 
    }
 
    /** Calcola il minimo comune multiplo tra i parametri
     * @return Il mcm tra a e b
     */    
    public static long mcm (int a, int b) {
 
        long tempa = a, 
             tempb =b,
             c = tempa * tempb,
             r;
 
        do {
            r = tempa % tempb;
            tempa = tempb;
            tempb = r;
        }while(r!=0);
 
        return c/tempa;
    }
 
    public static void main(String[] args) {
 
        int a = 0,b =0;
        boolean hoLettoTutto = false;
        do {
            try {
 
                a = getInt();
 
                b = getInt();
 
                hoLettoTutto = true;
            }
            catch (IOException ioex) {
                System.err.println("errore nella lettura da tastiera");
                ioex.printStackTrace();
                return;
            }
            catch(NumberFormatException nex) {
                System.out.println("dovresi inserire due numeri tra
"+Integer.MIN_VALUE+
                        " e "+Integer.MAX_VALUE);
          //richiede tutti e due i numeri anche se uno andava bene. Se vuoi 
          //puoi farlo meglio.
            }
 
        } while(!hoLettoTutto);
 
        System.out.println("minimo comune multiplo: "+mcm(a,b));


             }
togli ioex.printStackTrace() me lo sono dimenticato. Quel catch serve solo a
mostrare un messggio d'errore piu' umano dello stacktrace. Per stampare lo
stacktrace basta semplicemente (essendo nel main quindi cmq il programma
terminerebbe) non catturare l'eccezione.
Ciao
Matteo
