Вы находитесь на странице: 1из 6

Ejemplo 1 de paso de arrays a funciones en C++:

funcin que recibe un array de dos elementos e intercambia el contenido de estos dos
elementos.
#include <iostream>
using namespace std;
void intercambia(int []); //declaracin de la funcin.
//No es necesario poner el nombre del array
int main()
{
int A[2]={3,5};
intercambia(A); //en la llamada slo se escribe el nombre
//del array, sin corchetes
cout << A[0] << " " << A[1] << endl; //muestra 5 3
system("pause");
}
void intercambia(int a[]) //definicin de la funcin
{
int c;
c=a[0];
a[0]=a[1];
a[1]=c;
}

Ejemplo 2 de paso de arrays a funciones en C++:

En este ejemplo se leen las estaturas de los alumnos de una clase y se realizan con
ellos distintos clculos.
Se utilizan las siguientes funciones:
Funcin leer: Lee por teclado las estaturas de los alumnos y las guarda en el array.
Funcin estatura_media: recibe el array y calcula y devuelve la estatura media.
Funcin max_min: Calcula y devuelve la estatura mayor y la menor. Recibe el array y
los dos parmetros donde devolver la estatura mayor y la menor.
Funcin cuantos_mayor_menor_media: Calcula y devuelve cuantos alumnos hay con
estatura mayor que la media y cuntos con estatura menor. Recibe el array de
estaturas, la estatura media y los parmetros donde devolver los resultados.
Funcin mostrar_resultados: recibe el array y todos los datos calculados y los muestra
por pantalla. Solo el array pasa por referencia (por defecto), los dems parmetros
pasan por valor.
#include <iostream>
#include <iomanip>
using namespace std;

//declaracin de funciones
void leer(double []);
double estatura_media(double []);
void max_min(double [], double &, double &);
void cuantos_mayor_menor_media(double [], double, int &, int &);
void mostrar_resultados(double [], double, double, double, int, int);
int main()
{
double estaturas[10], media, mayor, menor;
int cont_mas = 0, cont_menos = 0;
leer(estaturas);
max_min(estaturas,mayor,menor);
media = estatura_media(estaturas);
cuantos_mayor_menor_media(estaturas,media,cont_mas,cont_menos);
mostrar_resultados(estaturas,media,mayor,menor,cont_mas,
cont_menos);
system("pause");
}
void leer(double a[])
{
int i;
cout << "Lectura de las estaturas de los alumnos:" << endl;
for(i=0; i<10; i++)
{
cout << "Alumno " << i+1 << ": ";
cin >> a[i];
}
}
double estatura_media(double a[])
{
double media = 0;
int i;
for(i=0; i<10; i++)
{
media = media + a[i];
}
media = media / 10;
return media;
}
void max_min(double a[], double &max, double &min)
{
int i;
max = min = a[0];
for(i=1; i<10; i++)
{

if(a[i]>max)
max = a[i];
else if(a[i]<min)
min = a[i];
}
}
void cuantos_mayor_menor_media(double a[], double media,
int &mayores_media, int &menores_media)
{
int i;
for(i=0; i<10; i++)
{
if(a[i]>media)
mayores_media++;
else if(a[i]<media)
menores_media++;
}
}
void mostrar_resultados(double a[], double media, double mayor,
double menor, int mayores_media, int menores_media)
{
int i;
system("cls");
cout << fixed << setprecision(2);
cout << "Estatura de los alumnos de la clase" << endl;
cout << "-----------------------------------" << endl;
for(i=0; i<10; i++)
{
cout << "Alumno " << setw(4) << i+1 << ": " << a[i] << endl;
}
cout << "Mayor estatura: " << mayor << endl;
cout << "Menor estatura: " << menor << endl;
cout << "Estatura media: " << media << endl;
cout << "Hay " << mayores_media << " alumnos con estatura ";
cout << "superior a la media" << endl;
cout << "Hay " << menores_media << " alumnos con estatura ";
cout << "inferior a la media" << endl << endl;
}

Ejemplo 3: pasar una matriz a una funcin en C++:


Cuando se pasa una matriz (array bidimensional) a una funcin, en la funcin no es
necesario especificar el tamao del primer ndice (filas), por lo tanto, aparecern los
corchetes correspondientes vacos.

En la llamada a la funcin a la que se enva el array, el nombre del array aparecer


solo, sin corchetes ni ndices
Programa que lee por teclado los elementos de dos matrices de enteros y crea otra
matriz con la suma de las dos. Se usarn tres funciones.
Funcin leerMatriz que se usar dos veces para leer por teclado los datos de cada
matriz.
Funcin sumarMatrices que realiza la suma de las dos matrices.
Funcin mostrarResultado que se usa tres veces para mostrar por pantalla las
tres matrices.
#include <iostream>
#include <iomanip>
using namespace std;
const int MAXFIL = 20;
const int MAXCOL = 30;
//declaracin de funciones
void leerMatriz(int [][MAXCOL], int, int);
void sumarMatrices(int [][MAXCOL], int [][MAXCOL],
int [][MAXCOL], int, int);
void mostrarResultado(int [][MAXCOL], int, int);
int main ()
{
int nfilas,ncols;
int matriz1[MAXFIL][MAXCOL];
int matriz2[MAXFIL][MAXCOL];
int matriz3[MAXFIL][MAXCOL];
do
{
cout<<"\nIntroduce numero de filas. Maximo " << MAXFIL << ": ";
cin >> nfilas;
}while(nfilas<=0 or nfilas >MAXFIL);
do
{
cout<<"\nIntroduce numero de columnas. Maximo " <<MAXCOL<<": ";
cin >> ncols;
}while(ncols<=0 or ncols >MAXCOL);
// Lectura de datos de la primera matriz
cout << "\n Introduce datos de la primera matriz ";
leerMatriz(matriz1, nfilas, ncols);
// Lectura de datos de la segunda matriz

cout << "\n Introduce datos de la segunda matriz ";


leerMatriz(matriz2, nfilas, ncols);
// Calcular la suma de las dos matrices
sumarMatrices(matriz1, matriz2, matriz3, nfilas, ncols);
// Mostrar el resultado por pantalla
system("cls");
cout << "\nmatriz 1:" << endl;
mostrarResultado(matriz1, nfilas, ncols);
cout << "\nmatriz 2:" << endl;
mostrarResultado(matriz2, nfilas, ncols);
cout << "\nmatriz 3 = matriz1 + matriz2" << endl;
mostrarResultado(matriz3, nfilas, ncols);
system("pause");
}
void leerMatriz(int matriz[][MAXCOL], int nf, int nc)
{
int fila, col;
for (fila=0; fila < nf; fila++ )
{
cout << "\nFila : " << fila+1 << endl;
for (col=0; col < nc; col++)
{
cout << "Elemento : " << col+1 <<": ";
cin >> matriz[fila][col];
}
}
}
void sumarMatrices(int matriz1[][MAXCOL], int matriz2[][MAXCOL],
int matriz3[][MAXCOL], int nf,int nc)
{
int fila, col;
for (fila=0; fila < nf; fila++ )
{
for (col=0; col < nc; col++)
matriz3[fila][col]=matriz1[fila][col] + matriz2[fila][col];
}
}
void mostrarResultado(int matriz[][MAXCOL], int nf, int nc)
{

int fila, col;


for (fila=0; fila < nf; fila++ )
{
for (col=0; col < nc; col++)
cout << setw(4) << matriz[fila][col];
cout << endl;
}
}

Вам также может понравиться