Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    14

    Rappresentare scala maggiore

    Ho bisogno di una struttura dati per rappresentare la scala maggiore. La struttura mi deve permettere di poter contare la distanza tra una nota e l'altra in modo circolare cioè:

    scala maggiore: do re mi fa sol la si

    distanza tra do-re = 1; distanza tra re-do = 6.

    Ho provato con enum ma non ho trovato nessun metodo che faccia al caso mio.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Usando le enum è piuttosto semplice perchè puoi usare il metodo implicito ordinal().

    codice:
    public class ScalaMaggiore {
       private enum Nota {
          DO, RE, MI, FA, SOL, LA, SI
       }
    
       private static int distanza(Nota n1, Nota n2) {
          int ret = n2.ordinal() - n1.ordinal();
          return (ret >= 0) ? ret : 7+ret;
       }
    
       public static void main(String[] args) {
          System.out.println("MI-FA: " + distanza(Nota.MI, Nota.FA) );
          System.out.println("FA-MI: " + distanza(Nota.FA, Nota.MI) );
       }
    }

    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
    May 2011
    Messaggi
    14

    [Risolto]Rappresentare scala maggiore

    perfetto!! grazie mille

  4. #4
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Buona soluzione (soprattutto con le enum) solo che lo farei più in modo OO

    codice:
    public class ScalaMaggiore
    {
        private enum Nota
        {
            DO, RE, MI, FA, SOL, LA, SI;
    
            public int distanza(Nota altraNota)
            {
                int ret = altraNota.ordinal() - ordinal();
                return (ret >= 0) ? ret : 7+ret;
            }
        }
    
        public static void main(String[] args)
        {
            System.out.println("MI-FA: " + Nota.MI.distanza(Nota.FA) );
            System.out.println("FA-MI: " + Nota.FA.distanza(Nota.MI) );
        }
    }

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

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.