Output programmino semplice semplice

di il
6 risposte

Output programmino semplice semplice

Ragazzi non capisco perchè è questo l'output del programma
c'è anche la soluzione ma non lo capisco proprio
il primo punto l'ho capito
gli altri no potreste spiegarmeli in parole povere?

Determinare, fornendo adeguata motivazione, l’output su
schermo del seguente programma C++:


#include<iostream>
#include<string>
using namespace std;
int funzione(int&,int);
int main ( ) {
int x=5, z=5, y=5;
z=funzione(x,z);
cout << "x= " << x << " y= " << y << " z= " << z << "\n";
z=funzione(y,x);
cout << "x= " << x << " y= " << y << " z= " << z << "\n";
y=funzione(x,y);
cout << "x= " << x << " y= " << y << " z= " << z << "\n";
}
int funzione(int& x, int y) {
y=y/2;
x=x-y;
return x;
}

Output programma:
x=3 y=5 z=3
x=3 y=4 z=4
x=1 y=1 z=4

6 Risposte

  • Re: Output programmino semplice semplice

    Hai imparato a mettere i tag code Finalmente.

    Allora, qui abbiamo passaggio per riferimento e passaggio per valore. La funzione prende il primo parametro per riferimento quindi è capace a cambiare il valore del primo parametro. Prende il secondo parametro per valore quindi anche se li cambia il valore il parametro iniziale rimane invariato.
    Quindi.
    
    
      int x=5, z=5, y=5;
      z=funzione(x,z);
    
    //Mi cambierà x ma non può fare niente contro z passato per valore. Alla fine assegna a z il valore calcolato dalla funzione.
    // dentro la funzione nella prima chiamata succede questo. z passato per valore è la variabile y nella funzione. 
    y = y/2 = 5/2 = 2;
    x = x - y = 5 - 2 = 3;
    A questo punto la variabile x iniziale sarà modificata da 5 a 3. Lo stesso valore viene passato a z al ritorno di questa funzione. Quindi alla fine avremmo:
    x = 3, y = 5, z = 3;
    
    Puoi procedere col resto credo adesso. Se hai ancora domande chiedi pure.
  • Re: Output programmino semplice semplice

    Per farti ragionare meglio cambia la funzione così
    
    int funzione(int& a, int b)
    {
        b = b/2;
        a = a-b;
        return a;
    }
    
    Avrai meno problemi con i nomi delle variabili.
  • Re: Output programmino semplice semplice

    Ti ringrazio ma nella mia domanda c'era scritto esplicitamente che avevo problemi per il secondo e terzo caso
    il primo l'avevo capito
    se puoi spiegarmeli mi faresti un favore
  • Re: Output programmino semplice semplice

    Cosa c'è da capire nel secondo e nel terzo scusa. parti dalla soluzione precedente.
    
    2. caso
    int x=3, y = 5, z=3;
      z=funzione(y,x);
    
    avrai y cambiato in y - (x/2); = 5 - 1 = 4
    x fisso non cambiato = 3
    z = y quindi z = 4
    
    3. caso
    int x=3, y = 4, z=4;
      y=funzione(x,y);
    

    x = 3 - y/2 = 3 - 2 = 1
    z invariata. = 4
    y = x = 1
  • Re: Output programmino semplice semplice

    Ah ho capito
    devo partire dalla prima(soluzioni primo caso)
    io invece ogni volta ripartito da capo e non riuscivo a trovare matematicamente le soluzioni
    ti ringrazio enormemente e scusa ma come hai potuto vedere non avevo capito
  • Re: Output programmino semplice semplice

    Nessun problema.
Devi accedere o registrarti per scrivere nel forum
6 risposte