Răspuns :

Program C++

#include <iostream>

#include <math.h>

using namespace std;

void medie(int a, int b, float* ma, float* mg) {

*ma = (a + b) / 2;

*mg = sqrt(a * b);

}

int main() {

int a, b;

float ma, mg;

cout << "Introduceti a si b : ";

cin >> a >> b;

medie(a, b, &ma, &mg);

cout << "\nMedia aritmetica : " << ma;

cout << "\nMedia geometrica : " << mg;

}

Explicatie :

Functia medie primeste 4 parametri :

  • 2 parametri de tip int
  • 2 parametri de tip pointer la float

Un pointer este un tip de data care retine adresa de memorie. Astfel functia medie cere adresele de memorie ale celor doua variabile ma si mg.

Pentru a decalara o variabila tip pointer folosim sintaxa :

tip_data* nume_variabila;

Operatorul & in fata unei variabile ne returneaza adresa unde se afla variabila respectiva. Asta folosim in apelarea functiei medie.

Operatorul * in fata unui pointer ne permite sa accesam direct variabila stocata in adresa de memorie spre care indica pointerul.

Spre exemplu urmatoarele doua secvente sunt echivalente :

  • int a;  a= 3;
  • int a; int* pointer_a = &a; *pointer_a=3;
Vezi imaginea Andrei750238