Bueno, casi creo que nunca he hablado de matrices, par谩metros o funciones en este blog, pero este post es una petici贸n de Rodrigo que me dijo por email que ten铆a problemas con su tarea porque no sabe c贸mo pasar una matriz como par谩metro a una funci贸n en c++. Es algo sencillo, pero dif铆cil de deducir. Veamos.
Si tu arreglo es de una dimensi贸n…
int matriz[4];
… la forma de declarar la funci贸n es la siguiente:
void fx(int m[4]) { ...c贸digo... }
Y la forma de llamar la funci贸n ser铆a:
fx(matriz);
Si el arreglo es de dos dimensiones…
int matriz[4][3];
… pues es lo mismo:
void fx(int m[4][3]) { ...c贸digo... }
Y la forma de llamar la funci贸n ser铆a:
fx(matriz);
Si la funci贸n retorna una matriz…
int matriz[4];
… se declara normal:
void fx(int m[4]) { return matriz[4]; }
Y la forma de llamar la funci贸n ser铆a:
matriz[4] = fx(matriz);
Este programa pide tres n煤meros, los almacena en una matriz, le suma 1 a cada elemento y los muestra, usando para cada acci贸n una funci贸n. As铆 que tenemos funciones que reciben matrices y que retornan matrices. Ch茅quenlo.
#include<iostream>
using namespace std;
void pedir(int matriz[3], int len)
{
for(int i=0; i<=len; i++)
{
cout << "Numero " << i+1 << ":? ";
cin >> matriz[i];
}
}
int sumar(int matriz[3], int len)
{
for(int i=0; i<=len; i++)
matriz[i]++;
return matriz[3];
}
void mostrar(int matriz[3], int len)
{
for(int i=0; i<=len; i++)
cout << matriz[i] << " ";
}
int main()
{
int matriz[3]={0}, len = sizeof(matriz)/sizeof(int);
pedir(matriz, len-1);
matriz[3] = sumar(matriz, len-1);
mostrar(matriz, len-1);
return 0;
}
Bueno, tal vez el t铆tulo qued贸 muy poco descriptivo, pero la idea es pedir un n煤mero de personas, luego se le pedir铆a a cada persona su peso pero nosotros solo vamos a generar un n煤mero aleatorio en determinado rango. Luego se clasificar铆a a esas personas en rangos de peso y al final mostrar una tabla que muestre la frecuencia de cada rango con asteriscos, as铆:
51-60 ***
61-70 **
71-80 ***
80-91 *
91-mas *****
El c贸digo en C++ ser铆a as铆:
#include<stdlib.h>
#include<iostream>
using namespace std;
int main()
{
int n,c,c2,peso[500],cat[5]={0},lim;
// n -> numero de personas
// c y c2 para ciclos
// peso[500] arreglo para guardar el peso de las personas
// cat[5] arreglo para guardar el n煤mero de personas en cada categoria de peso
srand(time(NULL)); // Inicializa los n煤meros aleatorios
cout<<"Introduce el n煤mero de personas: ";cin>>n;
for(c=0;c<=n-1;c++)
{
peso[c]=51+rand()%(120-51); //guarda un n煤mero aleatorio del 51 al 120 en cada elemento del arreglo
// seg煤n su valor se aumenta un elemento de nuestro otro arreglo
if(peso[c]>50 && peso[c]<=60)
cat[0]++;
if(peso[c]>60 && peso[c]<=70)
cat[1]++;
if(peso[c]>70 && peso[c]<=80)
cat[2]++;
if(peso[c]>80 && peso[c]<=90)
cat[3]++;
if(peso[c]>90)
cat[4]++;
}
cout<<"\n";
for(c=0;c<=4;c++)
{
switch(c)
{
// segun cada caso imprime algo diferente
case 0:
cout<<"51-60\t";
break;
case 1:
cout<<"61-70\t";
break;
case 2:
cout<<"71-80\t";
break;
case 3:
cout<<"81-90\t";
break;
case 4:
cout<<"90- \t";
break;
}
lim=cat[c]; // no podemos usar un arreglo como limite del ciclo (la verdad
// no se porque), entonces lo pasamos a una variable normal
for(c2=1;c2<=lim;c2++)
cout<<"*";
cout<<"\n\n";
}
cin.get();cin.get(); // detiene la ejecuci贸n al final (es como getch();)
}
A prop贸sito, este programa fue una petici贸n especial de un usuario.
Programa que lee un arreglo de 10 n煤meros y los ordena con el m茅todo de la burbuja de manera ascendente o descendente seg煤n se elija. Para esto utiliza una funci贸n que recibe el arreglo y la varible ‘ord’ (1=asc, 2=desc), luego utiliza otra funci贸n para imprimirlo.
#include<iostream>
using namespace std;
int ordenar(int[],int);
int imprimir(int[]);
int main()
{
int c,lista[9],ord;
for(c=0;c<=9;c++)
{
cout<<"Numero "<<c+1<<": "; cin>>lista[c];
}
cout<<"\nAscendente 1\nDescendente 2\n--> Opci贸n: "; cin>>ord;
if(ord==1 || ord==2)
{
ordenar(lista,ord);
imprimir(lista);
}
}
int ordenar(int lista[],int ord)
{
int c1,c2,aux;
for(c1=0;c1<=9;c1++)
{
for(c2=0;c2<9;c2++)
{
if(ord==1)
{
if(lista[c2]>lista[c2+1])
{
aux=lista[c2];
lista[c2]=lista[c2+1];
lista[c2+1]=aux;
}
}
else
{
if(lista[c2]<lista[c2+1])
{
aux=lista[c2];
lista[c2]=lista[c2+1];
lista[c2+1]=aux;
}
}
}
}
return 0;
}
int imprimir(int lista[])
{
int c;
for(c=0;c<=9;c++)
cout<<lista[c]<<" ";
cin.get();cin.get();
}
/*Creado por THEbatzuk*/