Passaggio per referenza e valore

di il
1 risposte

Passaggio per referenza e valore

Ciao ragazzi
guardate questo programmino..serve per implementare la risoluzione di una equazione differenziale del primo ordine...ma al di la di questo..come si può vedere vengono utilizzate delle funzioni e il passaggio delle variabili avviene per referenza. Cosa dovrei cambiare in questo programma se volessi invece passare le variabili per valore??(mantenendo gli stessi risultati ovviam)
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;

  //    typedef double DB;
typedef float DB;

void inizia(DB & x0, DB & y0, DB & dx, int & niter);
DB deriv (DB x, DB y);
void eulero(DB & x, DB & y, DB  dx, int niter);
void stampa(DB x, DB y, DB dx);

int main(){
  int niter;
  DB x, y, dx;
  inizia( x, y, dx, niter);
  stampa( x, y, dx);
  eulero( x, y, dx, niter);
//  stampa( x, y, dx);
  return 0;
}

void inizia(DB & x0, DB & y0, DB & dx, int & niter){
  x0 = 0;   y0 = 1;    // Condizioni iniziali per x e y
  dx = 0.25;            // incremento x
  niter = 4;          
}

void eulero(DB & x, DB & y, DB  dx, int niter){
  for(int i = 1; i<= niter; i++){
    DB der = deriv( x, y);
    y = y + der * dx;
    x = x + dx;
    stampa (x, y, dx);
  }
}

DB deriv (DB x, DB y){
//  return 2 * x;
  return(2 * x * y);
}

void stampa(DB x, DB y, DB dx){
  cout <<setw(10)<<x<<setw(10)<<y<<setw(10)<<2*x*y<<setw(10)<<2*x*y*dx<<endl;
 // cout <<setw(10)<<x<<setw(10)<<y<<setw(10)<<dx<<endl;
}

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte