Autore Topic: Scambio dati  (Letto 1098 volte)

Offline stefy96guitar

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Scambio dati
« il: 19 Luglio 2013, 21:27:16 CEST »
0
Salve a tutti! Non so se questa è la categoria giusta, ma pongo comunque il mio problema...
Nell'app che sto creando ho due numeri (m e n): volevo fare in modo che se il numero n fosse maggiore di m, m si scambiasse con n, ma non so come si fa! c'è un modo per fare questa cosa? Grazie in anticipo!

Offline zorcraft

  • Utente junior
  • **
  • Post: 108
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    note
  • Play Store ID:
    zorcraft
Re:Scambio dati
« Risposta #1 il: 19 Luglio 2013, 23:59:34 CEST »
+1
usa una terza variabile d'appoggio

Codice (Java): [Seleziona]
int m;
int n;
int appoggio;

if(n>m){
    appoggio=m;
    m=n;
    n=appoggio
}

cosi in m avrai il valore n e in n ci sara il valore di m

Ho buttato giu una cosa su due piedi ma dovrebbe funzionare

Offline stefy96guitar

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Scambio dati
« Risposta #2 il: 20 Luglio 2013, 17:31:07 CEST »
0
Ok grazie mille!! Per non aprire tanti post ho anche da chiedere: la semplice app che ho creato calcola MCD e mcm di due numeri, ma come faccio a calcolare MCD e mcm se inserisco un terzo numero?

Offline zorcraft

  • Utente junior
  • **
  • Post: 108
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    note
  • Play Store ID:
    zorcraft
Re:Scambio dati
« Risposta #3 il: 21 Luglio 2013, 12:31:55 CEST »
0
ciao non ho capito bene la domanda, tu il programma dei mcm e MCD lo hai gia?
se la risposta e si non ti deve interessare il terzo numero lo usi solo in quel momento in effetti eseguito quel passaggio lo potresti distruggere perche i tuoi due valori sono nelle 2 variabili precedenti solo invertiti se nel if risulta trua

Offline stefy96guitar

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Scambio dati
« Risposta #4 il: 21 Luglio 2013, 19:16:08 CEST »
0
si l'app che ho creato calcola già l'MCD e mcm di due numeri... non ho capito bene cosa intendi... mi faresti un esempio col codice?

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Scambio dati
« Risposta #5 il: 21 Luglio 2013, 20:58:03 CEST »
0
Non è un problema che riguarda la programmazione Android, comuqnue ti ricordo che M.C.D. e il m.c.m. sono operazioni associative:

MCD(n1, n2, n3) = MCD(MCD(n1, n2), n3) = MCD(n1, MCD(n2, n3))
mcm(n1, n2, n3) = mcm(mcm(n1, n2), n3) = mcm(n1, mcm(n2, n3))
adb logcat | tee /tmp/logcat | grep TAG

Offline zorcraft

  • Utente junior
  • **
  • Post: 108
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    note
  • Play Store ID:
    zorcraft
Re:Scambio dati
« Risposta #6 il: 22 Luglio 2013, 01:10:22 CEST »
0
Ho paura che inizzi a perdere l'obbiettivo principale, con il codice che ti ho scritto per invertire i numeri ho inserito una terza variabile che ti serve d'appoggio ma eseguita l'inversione dei numeri la terza variabile puoi dimenticarla o meglio distruggerla per liberare la memoria ma al fine del tuo programma non ti serve piu

Offline stefy96guitar

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Scambio dati
« Risposta #7 il: 22 Luglio 2013, 11:21:02 CEST »
0
no ma quello l'ho capito! quello che invece non so è come fare se l'utente anzichè inserire solo due variabili ne inserisce una terza... In poche parole non so come far calcolare all'app l'MCD e mcm di tre numeri...

Offline zorcraft

  • Utente junior
  • **
  • Post: 108
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    note
  • Play Store ID:
    zorcraft
Re:Scambio dati
« Risposta #8 il: 22 Luglio 2013, 11:22:52 CEST »
0
a ok scusa, dovresti provare a postare un po di codice tu cosi proviamo ad integrare qualcosa se riusciamo, perche a dire il vero ci sono molti modi per ottenere il risultato.
in oltre bisogna capire come fai inserire i valori agli utenti che usano l'app

Offline crbin1

  • Utente junior
  • **
  • Post: 61
  • Respect: +6
    • labeltodo
    • Mostra profilo
    • Do Androids Dream of Electric Sheep?
  • Dispositivo Android:
    Galaxy Nexus
Re:Scambio dati
« Risposta #9 il: 22 Luglio 2013, 11:33:41 CEST »
0
no ma quello l'ho capito! quello che invece non so è come fare se l'utente anzichè inserire solo due variabili ne inserisce una terza... In poche parole non so come far calcolare all'app l'MCD e mcm di tre numeri...

La cosa migliore effettivamente è se posti un po' di codice. Comunque se tu hai una funzione che calcola MCD e mcm solo tra due numeri potresti fare un ciclo, prima fai calcolare il risultato tra i primi due, poi tra il risultato dei primi due e il terzo, poi tra il nuovo risultato e il quarto ecc. fino a fine numeri inseriti.

Offline stefy96guitar

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Scambio dati
« Risposta #10 il: 22 Luglio 2013, 14:02:20 CEST »
0
ecco qui un po' di codice:
Codice (Java): [Seleziona]
private void calcolare(Bundle savedInstanceState) {
                               
                                m=Integer.parseInt(num1.getText().toString());
                                n=Integer.parseInt(num2.getText().toString());
                                o=Integer.parseInt(num3.getText().toString());
                                p=Integer.parseInt(num4.getText().toString());
                                                               
                                max=m;
                                min=n;
                                                       
                                while (m!=n) {
                                        if (m>n) {
                                                m=m-n;
                                               
                                        }
                                        else {
                                                n=n-m;
                                               
                                        }
                                         MCD=m;
                                            MCM=(max*min)/MCD;
                                }
                               
                           
                                mcd.setText("MCD: "+MCD+"");                           
                                mcm.setText("mcm: "+MCM+"");
                               
                       
                        }});
                }
        };
       

Offline crbin1

  • Utente junior
  • **
  • Post: 61
  • Respect: +6
    • labeltodo
    • Mostra profilo
    • Do Androids Dream of Electric Sheep?
  • Dispositivo Android:
    Galaxy Nexus
Re:Scambio dati
« Risposta #11 il: 22 Luglio 2013, 14:53:17 CEST »
0
ecco qui un po' di codice:
Codice (Java): [Seleziona]
private void calcolare(Bundle savedInstanceState) {
                               
                                m=Integer.parseInt(num1.getText().toString());
                                n=Integer.parseInt(num2.getText().toString());
                                o=Integer.parseInt(num3.getText().toString());
                                p=Integer.parseInt(num4.getText().toString());
                                                               
                                max=m;
                                min=n;
                                                       
                                while (m!=n) {
                                        if (m>n) {
                                                m=m-n;
                                               
                                        }
                                        else {
                                                n=n-m;
                                               
                                        }
                                         MCD=m;
                                            MCM=(max*min)/MCD;
                                }
                               
                           
                                mcd.setText("MCD: "+MCD+"");                           
                                mcm.setText("mcm: "+MCM+"");
                               
                       
                        }});
                }
        };
       


Qua nessuna variabile è definita e si intuisce solo cos'è... num1, num2, num3 e num4 sono EditText? Naturalmente ai valori che estrai da qua un minimo di controllo lo devi fare. E parché a questa funzione passi un Bundle?

A parte questo devi farti una funzione a cui passi due numeri e ti restituisce il MCM per esempio. E poi cicli tutti i numeri che hai passando ogni volta il risutato precedente e il nuovo numero.

Offline stefy96guitar

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Scambio dati
« Risposta #12 il: 22 Luglio 2013, 14:56:06 CEST »
0
si sono EditText.. è che non ho messo tutto il codice ma solo la parte che si occupa dei calcoli... comunque ho provato ma quando provo l'app sul cellulare crasha...

Offline crbin1

  • Utente junior
  • **
  • Post: 61
  • Respect: +6
    • labeltodo
    • Mostra profilo
    • Do Androids Dream of Electric Sheep?
  • Dispositivo Android:
    Galaxy Nexus
Re:Scambio dati
« Risposta #13 il: 22 Luglio 2013, 15:06:58 CEST »
0
si sono EditText.. è che non ho messo tutto il codice ma solo la parte che si occupa dei calcoli... comunque ho provato ma quando provo l'app sul cellulare crasha...

posta tutto il codice e il LogCat dell'errore altrimenti è difficile aiutarti

Offline stefy96guitar

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Scambio dati
« Risposta #14 il: 22 Luglio 2013, 15:17:19 CEST »
0
per non andare troppo per le lunghe... non sono un programmatore espertissimo da quanto avete potuto capire... ma avrei solo bisogno che mi diciate come creare una funzione a cui passo due numeri e mi restituisce il MCD dei tre numeri

Post unito: 22 Luglio 2013, 15:21:39 CEST
comunque quando aggiungo il terzo numero, l'MCD me lo calcola ma solo se metto obbligatoriamente tre numeri... se ne metto due mi da questo errore:
Codice: [Seleziona]
07-22 15:10:56.846: W/KeyCharacterMap(6974): No keyboard for id 0
07-22 15:10:56.856: W/KeyCharacterMap(6974): Using default keymap
07-22 15:11:14.933: W/dalvikvm(6974): threadid=1: thread exiting with uncaught exception (group=0x4001d560)

Post unito: 22 Luglio 2013, 18:12:26 CEST
ed ecco tutto il codice:
Codice (Java): [Seleziona]
public class MainActivity extends Activity {
       
        EditText num1;
        EditText num2;
        EditText num3;
        EditText num4;
        TextView mcd;
        TextView mcm;  
        Button calcola;
    private int m;
    private int n;
    private int MCM;
   
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                initControls(savedInstanceState);
        }

        private void initControls(final Bundle savedInstanceState) {
               
                num1=(EditText) findViewById(R.id.num1);
                num2=(EditText) findViewById(R.id.num2);
                num3=(EditText) findViewById(R.id.num3);
                num4=(EditText) findViewById(R.id.num4);
                mcd=(TextView) findViewById(R.id.mcd);
                mcm=(TextView) findViewById(R.id.mcm);
                calcola=(Button) findViewById(R.id.calcola);           
                calcola.setOnClickListener(new Button.OnClickListener() {

                        private int mCD;
                        private int r;
                        private int p;
                        private int MCD;
                        private int min;
                        private int max;
                        private int o;
                        private int MCD1;
                       

                        @Override
                        public void onClick(View view) { calcolare(savedInstanceState);
                               
                               
                        }

                        private void calcolare(Bundle savedInstanceState) {
                               
                                m=Integer.parseInt(num1.getText().toString());
                                n=Integer.parseInt(num2.getText().toString());
                                o=Integer.parseInt(num3.getText().toString());
                                                               
                                max=m;
                                min=n;
                                                       
                                while (m!=n) {
                                        if (m>n) {
                                                m=m-n;
                                               
                                        }
                                        else {
                                                n=n-m;
                                               
                                        }
                                         MCD=m;
                                            MCM=(max*min)/MCD;
                                }
                               
                           
                                mcd.setText("MCD: "+MCD+"");                           
                                mcm.setText("mcm: "+MCM+"");
                               
                               
                        }
                       
                       
                               
                                                       
                        });
                }
        };
« Ultima modifica: 22 Luglio 2013, 18:12:26 CEST da stefy96guitar, Reason: Merged DoublePost »