You are on page 1of 23

FUNCIONES en C++

Parte Terica: Qu es una Funcin:


Una funcin es un conjunto de lneas de cdigo (parte de un programa), con nombre, orientadas a la ejecucin de una tarea especfica y que opcionalmente puede retornar un valor al programa que la invoc.

float Impuesto( float sueldo, float tasa)


Argumentos o Parametros

tipo nombre

Importante
Cada programa C++ tiene al menos una funcin: la funcin main Una funcin recibe valores de entrada (parmetros) y proporciona un valor de salida ( valor de retorno). La funcin se llama o invoca cuando deseamos aplicarla. C++ permite definir al programador sus propias funciones. Todo problema se puede resolver con funciones o sin ellas, pero su uso adecuado hace que el programa sea ms eficiente, fcil de leer y probar. Ejemplos : #include <iostream.h> #include <conio.h> int SUMAR (int x, int y) { return(x+y); } main() { cout<< "Suma:"<< SUMAR(4, 7); getche(); }

#include <iostream.h> #include <conio.h> /* Prototipo de funcion */ int SUMAR (int x, int y); main() { int a, b; cout<< "Ingrese a: "; cin>>a; cout<<endl; cout<< "Ingrese b: "; cin>>b; cout<< "\nSuma:"<< SUMAR(a, b); getche(); } int SUMAR (int x, int y) { int SUMART; SUMART = x + y; return(SUMART); }

Ejercicio : Generar la funcin facto para determinar el factorial de un nmero. Luego, mostrar el
factorial de los nmeros del 1 al 9. #include <iostream.h> int facto(int x){ int i,f=1; for(i=1;i<=x;i++){ f=f*i;} return f; } main(){ int i,resultado; for (i=1;i<10;i++){ resultado = facto (i); cout<<"Factorial de "<<i<<" : "<<resultado<<endl; } system("pause"); }

Ejercicio : Generar la funcin combi que calcula los coeficientes del desarrollo de un binomio
algebraico a la potencia N. #include <iostream.h> #include <conio.h> int facto(int N){ int f =1; for(int i=2; i<=N; i++) f *= i; return f; } double combi(int N, int M){ return facto(N)/facto(N-M)/facto(M); } main(){ int p; cout << "Teclee la potencia del binomio: "; cin >> p; cout << "Los coeficientes son: "; for(int i= 0; i<=p ; i++) cout << combi(p,i) << " "; cout << "\n"; getche(); }

FUNCIONES TIPO VOID


Se usan cuando no se requiere regresar un valor Las funciones tipo void no regresan ningn valor solamente llevan a cabo algn cmputo.

Ejercicio : Generar la funcin cuadrados (tipo void) que muestra los nmeros de 1 hasta un
valor tope asi como sus correspondientes cuadrados. #include <iostream.h> #include <conio.h> void cuadrados(int n); main() { int num; cout<<"Ingrese tope: "<<endl; cin>>num; cout<<"Mostrar cuadrados de 1 hasta el tope ingresado: "<<endl; cuadrados(num);

getche(); } void cuadrados(int n) { int i; for( i=1; i<=n; i++) cout<<i<<"\t"<<i*i<<endl; }

Observaciones adicionales
Las funciones terminan su ejecucin ya sea a travs de la ejecucin de la ltima instruccin o utilizando la sentencia return. Un funcin puede retornar valor slo cuando el tipo de retorno no es void. Las funciones que son de tipos distintos de void pueden ser utilizadas como operandos en otras expresiones del lenguaje.

int funcion3 ( int& X, int Y, int Z )

Parametro por Referencia

Parametro por Valor

Importante
Un parmetro valor significa que el argumento (parmetro) puede ser una variable, una constante o una expresin. Un parmetro por referencia implica que el argumento necesariamente es una variable. La forma de indicar un parmetro por referencia es anexar el smbolo & al final del tipo de la variable

Por valor
#include <iostream.h> void fporValor(int y){ y++; cout<<y<<endl; } main(){ int x = 6; fporValor(x); cout<<x<<endl; system("pause"); }

Por referencia
#include <iostream.h> void freferencia(int &y){ y +=2; cout<<y<<endl; } main(){ int x = 20; freferencia(x); cout<<x<<endl; system("pause"); }

POR VALOR

POR REFERENCIA

Parte Practica:

FUNCIONES
EJERCICIOS DE PARAMETROS DE UNA FUNCION (POR VALOR Y POR REFERENCIA)

1
#include <iostream.h> void IncrementarVal(int x) { x=x+1; }; void IncrementarRef(int &x) { x=x+1; }; int main(void) { int a; a=5; cout<<a<<"\n"; IncrementarVal(a); cout<<a<<"\n"; IncrementarRef(a); cout<<a<<"\n"; IncrementarVal(a); cout<<a<<"\n"; IncrementarRef(a); cout<<a<<"\n"; system("pause"); }

2
#include <iostream> using namespace std; void elevarCuadrado (int &); int main() { int x = 0; . cout << "Ingrese x para elevarlo al cuadrado" << endl;

cin >> x; cout << "antes de elevarse es " << x <<endl; elevarCuadrado(x); cout << "x despues de elevarse es " << x << endl; return 0; system("pause"); } void elevarCuadrado (int &y ) { y = y*y; }

3
#include<iostream> using namespace std; void sqr(float &x); int main() { float numero; printf( "Dame un numero: " ); scanf( "%f", &numero ); sqr( numero ); printf( "El cuadrado es %0.0f\n", numero ); system("pause"); } void sqr(float &x) { x = x * x; }

4
#include <iostream> #include <conio.h> #include <string.h> using namespace std;

int nroRep(char cad[], char c) { int cont=0; for (int i=0;i<strlen(cad);i++) { if (cad[i]==c) cont++;

} return cont;

} int main(){ char cadena[100],caracter; cout<<"Ingrese una cadena carateres:\n "; cin.getline(cadena,100); cout<<"Ingrese caracter a buscar:\n "; cin>>caracter; cout<<"El Caracter "<<caracter<<" Se Repite "<<nroRep(cadena,caracter)<<" veces\n"; system("Pause"); return 0; }

5
#include <iostream.h> #include <conio.h> #include <string.h> bool nroValido(char cad[]) { char cad1[6]; int i=5,j=6,e=0; strncpy (cad1,cad,5); cad1[5]='\0'; if (strcmp(cad1,"11111")==0){ while (j<=strlen(cad)){ if (cad[i]=='0' && cad[j]=='1') { i=i+2; j=j+2; e=1; } else { return false; } } if (e==1) return true; } else

return false; } int main(){ char cadena[100]; cout<<"Ingrese Codigo de 0 y 1: "<<endl; cin>>cadena; if(nroValido(cadena)) cout<<"Valido\n"; else cout<<"InValido\n"; system("Pause"); return 0; }

6
#include <iostream> #include <conio.h> #include <math.h> using namespace std; void leerMatriz(int m[][50],int fila, int colu) { for (int i=0;i<fila;i++) for (int j=0;j<colu;j++) { cout<<"Ingrese elemento "<<i+1<<" : "<<j+1<<" : "; cin>>m[i][j]; } } void mostrarMatriz(int m[][50],int fila, int colu) { for (int i=0;i<fila;i++) { for (int j=0;j<colu;j++) { cout<<m[i][j]<<" "; } cout<<"\n"; } }

void prodMatriz(int A[][50], int B[][50], int fa, int fb, int ca, int cb) { int c[50][50]; if (ca==fb) { for (int i=0;i<fa;i++){ for (int j=0;j<cb;j++) { c[i][j]=0; for (int k=0;k<ca;k++) { c[i][j]=c[i][j]+(A[i][k]*B[k][j]); } } } mostrarMatriz(c,fa,cb); }else cout<<"No Se Puede Multiplicar Matrices"<<endl; } int main () { int ma[50][50],mb[50][50],fa,ca,fb,cb; cout<<"INGRESE CANTIDAD DE FILAS DE LA MATRIZ A: "; cin>>fa; cout<<"INGRESE CANTIDAD DE COLUMNAS DE LA MATRIZ A: "; cin>>ca; leerMatriz(ma,fa,ca); mostrarMatriz(ma,fa,ca); cout<<"INGRESE CANTIDAD DE FILAS DE LA MATRIZ B: "; cin>>fb; cout<<"INGRESE CANTIDAD DE COLUMNAS DE LA MATRIZ B: "; cin>>cb; leerMatriz(mb,fb,cb); mostrarMatriz(mb,fb,cb); cout<<"El Producto de Matrices Es: "<<endl; prodMatriz(ma,mb,fa,fb,ca,cb); system("pause"); return 0; }

7
#include <iostream> #include <conio.h> using namespace std; int darTemp ( int& ); int actividad( int ); main() { int temperatura; darTemp( temperatura ); actividad( temperatura ); getche(); } int darTemp( int& temp ) { cout<<"introduzca la temperatura exterior:"<<endl; cin>>temp; cout<<"la temperatura actual es " <<temp<<endl; } int actividad( int temp ) { cout<<"la actividad recomendada es "; if( temp > 85 ) cout<<"nadar."<<endl; else if ( temp > 70 ) cout<<"tenis."<<endl; else if (temp > 32) cout<<"golf."<<endl; else if ( temp > 0 ) cout<<"esquiar."<<endl; else cout<<"bailar."<<endl; }

8
#include<iostream> #include <stdio.h> #define LIM 8 using namespace std; int monedas[LIM]= {500, 200, 100, 50, 25, 10, 5, 1}; main() {

int num, cantidad, numonedas; printf ("Introduzca el importe exacto: "); scanf ("%d", &cantidad); printf ("El cambio optimo es el siguiente: \n"); for (num=0; num<LIM; num++) { numonedas=cantidad/monedas[num]; if (numonedas != 0) printf ("%d de %d.\n", numonedas, monedas[num]); cantidad= cantidad % monedas[num]; } system("pause"); }

9
#include<iostream> using namespace std; void llenar (int M[20][20], int f, int c) { int k=1; for (int i=1;i<=f;i++) { if (i%2!=0) { for (int j=1;j<=c;j++) { M[i][j]=k; k++; } } else { for (int j=c;j>=1;j--) { M[i][j]=k; k++; } } } } void mostrar (int M[20][20], int f, int c) { for (int i=1;i<=f;i++) { printf("\n"); for (int j=1;j<=c;j++)

{ printf("[%d] ",M[i][j]); } } } int main () { int f, c; int M[20][20]; printf("Inserte filas de M: "); scanf("%d",&f); printf("Inserte cols. de M: "); scanf("%d",&c); llenar(M, f, c); mostrar(M, f, c); system("pause"); }

10
#include<iostream> #include<conio.h> using namespace std; void LeerArray(int n,float array); void Burbuja(int n,float array); void MuestraArray(int n ,float array); void LeerArray(int n,float array[]) { int i; for(i=0;i<n;i++) { cout<<"Ingrese elemento :"<<i<<":"; cin>>array[i]; } } void Burbuja(int n,float x[]) { int i,j; float temp; for(i=1;i<n;i++) for(j=n-1;j>=i;j--) if(x[j-1]>x[j]) { temp=x[j-1]; x[j]=temp; } } void MuestraArray(int n,float array[]) { int i; for(i=0;i<n;i++)

cout<<"Elemento"<<i<<"="<<array[i]<<endl; } int main() { float x[50]; int n; cout<<"Nro de datos a leer :"<<endl; cin>>n; LeerArray(n,x); Burbuja(n,x); cout<<endl<<"Elementos ordenados:"<<endl; MuestraArray(n,x); getch(); }

11
#include <iostream.h> #include <conio.h> void llenar(int v[],int tam); void primo(int num); void verificaprimo(int v[],int tam); void llenar(int v[],int tam){ int i,num; for (i=1;i<=tam;i++){ cout<<"Ingrese Valor"<<i<<endl; cin>>num; v[i]=num; } } void primo(int num){ int i,d=0; for (i=1;i<=num;i++){ if (num%i==0) d++; } if(d==2){ cout<<num; cout<<" Es Primo"<<endl; } else{ cout<<num; cout<<" No Es Primo"<<endl;} } void verificaprimo(int v[],int tam){ int i,num;

for (i=1;i<=tam;i++){ num=v[i]; primo(num);} } int main() { int vector[6],t=6; llenar(vector,t); verificaprimo(vector,t); system("pause"); return 0; }

12
#include <iostream> using namespace std; void llenarvector(int v, int tam); void mdife(int v, int tam ,int &ma, int &me,int &dif); void llenarvector(int v[], int tam){ int i,num; for (i=1;i<=tam;i++){ cout<<"Ingrese Valor "<<i<<endl; cin>>num; v[i]=num;} } void mdife(int v[],int tam, int &ma, int &me,int &dif){ int i,j,aux=0; for (i=1;i<=tam;i++) for (j=1;j<=tam;j++) if (v[i]-v[j]>aux){ aux=v[i]-v[j]; ma=i; me=j;} dif=aux; } int main() { int vector[100],n,ima,ime,diferencia; cout<<"Ingrese Cantidad de Numeros"<<endl; cin>>n; llenarvector(vector,n); mdife(vector,n,ima,ime,diferencia); cout<<"RESULTADO"<<endl;

cout<<"La Mayor diferencia "<<diferencia<<endl; cout<<"Elementos "<<ime<<" y "<<ima<<endl; system("pause"); return 0; }

13
#include<iostream> #include<conio.h> using namespace std; void fmenu(void); void fpedir_datos(void); void farea(void); void fvolumen(void); void fsacar_datos(void); int op; long int radio; float area,volumen; int main() { fmenu(); if (op==1) { fpedir_datos(); farea(); } else { if (op==2) { fpedir_datos(); fvolumen(); } } fsacar_datos(); } void fmenu(void) { puts(" MENU DE OPCIONES\n"); puts(" ------------------\n"); puts("1. CALCULAR AREA DE LA CIRCUNFERENCIA\n"); puts("2. CALCULAR VOLUMEN DE LA ESFERA\n"); puts("3. SALIR\n"); puts(""); puts("ELIJA LA OPCION DESEADA...");

scanf("%d",&op); while (op!=1 && op!=2 && op!=3) {puts("\nOpcion erronea, teclee una entre 1,2 o 3..."); scanf("%d",&op); } } void fpedir_datos(void) { puts("\nDame el radio de la circunferencia en cm.:"); scanf("%ld",&radio); } void farea(void) { area=(float)3.1416*(float)radio*(float)radio; } void fvolumen(void) { volumen=(float)3.1416*(float)radio*(float)radio*(float)radio*4/3; } void fsacar_datos(void) { if (op==1) {printf("\nEl area de la circunferencia es %.2f cm2",area); getch();} else { if (op==2) {printf("\nEl volumen de la circunferencia es %.2f cm3",volumen); getch();} } }

14
#include <iostream> using namespace std; void referencia ( int&, int ); int A,B; main()

{ cout<<"\n Ingrese un valor para A: "; cin>>A; cout<<"\n Ingrese un valor para B: "; cin>>B; cout<<"\n "; cout<<"\n valor inicial de A: "<<A; cout<<"\n direccion inicial de A: "<<&A; cout<<"\n valor inicial de B: "<<B; cout<<"\n direccion inicial de B: "<<&B; cout<<"\n \n\n\n"; referencia(A,B); system("pause"); } void referencia ( int &vieneA, int vieneB ) { cout<<" [ PRUEBA 1 ] \n"; cout<<"\n\n valor de *vieneA* = "<<vieneA<<"\n" <<" direccion de *vieneA* = "<<&vieneA<<"\n" <<" valor de *A* = "<<A<<"\n" <<" direccion de *A* = "<<&A<<"\n\n" <<"\n\n valor de *vieneB* = "<<vieneB<<"\n" <<" direccion de *vieneB* = "<<&vieneB<<"\n" <<" valor de *B* = "<<B<<"\n" <<" direccion de *B* = "<<&B<<"\n" <<endl; system("pause"); cout<<" [ PRUEBA 2 ] \n"; vieneA = 10; cout<<"\n\n valor de *vieneA* = "<<vieneA<<"\n" <<" direccion de *vieneA* = "<<&vieneA<<"\n" <<" valor de *A* = "<<A<<"\n" <<" direccion de *A* = "<<&A<<"\n\n" <<"\n\n valor de *vieneB* = "<<vieneB<<"\n" <<" direccion de *vieneB* = "<<&vieneB<<"\n" <<" valor de *B* = "<<B<<"\n" <<" direccion de *B* = "<<&B<<"\n" <<endl;

system("pause"); cout<<" [ PRUEBA 3 ] \n"; vieneB = 1200; cout<<"\n\n valor de *vieneA* = "<<vieneA<<"\n" <<" direccion de *vieneA* = "<<&vieneA<<"\n" <<" valor de *A* = "<<A<<"\n" <<" direccion de *A* = "<<&A<<"\n\n" <<"\n\n valor de *vieneB* = "<<vieneB<<"\n" <<" direccion de *vieneB* = "<<&vieneB<<"\n" <<" valor de *B* = "<<B<<"\n" <<" direccion de *B* = "<<&B<<"\n" <<endl; system("pause"); cout<<" [ PRUEBA 4 ] \n"; A = 44; cout<<"\n\n valor de *vieneA* = "<<vieneA<<"\n" <<" direccion de *vieneA* = "<<&vieneA<<"\n" <<" valor de *A* = "<<A<<"\n" <<" direccion de *A* = "<<&A<<"\n\n" <<"\n\n valor de *vieneB* = "<<vieneB<<"\n" <<" direccion de *vieneB* = "<<&vieneB<<"\n" <<" valor de *B* = "<<B<<"\n" <<" direccion de *B* = "<<&B<<"\n"; system("pause"); }

15
#include<iostream> using namespace std; int f(int m, int n); int main() { int i; printf("Prueba: funcin entero elevado a potencia"); for (i=0; i<10; i++) { printf("2^%d es:%d",i,f(2,i)); printf("3^%d es:%d",i,f(3,i)); } return 0; system("pause"); } int f(int base,int n)

{ int i,p=1; for (i=1;i<=n ;i++) p=p*base; return p; system("pause"); }

16
#include<iostream> #include <cstring> using namespace std; const int Max = 128; typedef struct { char nombre[Max]; char apellidos[Max]; int edad; } Persona; void mostrarPersona(const Persona &x); void inicializarPersona(Persona &p, const char nombre[], const char apellidos[],int edad); int main() { Persona p1; inicializarPersona( p1, "Perico", "Palotes", 18 ); mostrarPersona( p1 ); system("pause"); } void inicializarPersona(Persona &p, const char nombre[], const char apellidos[],int edad) { strcpy( p.nombre, nombre ); strcpy( p.apellidos, apellidos ); p.edad = edad; } void mostrarPersona(const Persona &p) { printf( "%s, %s: %d\n", p.apellidos, p.nombre, p.edad ); }

17
#include <iostream> #include <conio.h> #include <math.h> #include <string.h> using namespace std; struct empleado { char nombre[32];

int edad; char sexo; };

void llenarEmpleado(empleado e[], int cant) { for (int i=0;i<cant;i++) { cout<<"Nombre: "; cin>>e[i].nombre; cout<<"Edad : "; cin>>e[i].edad; cout<<"Sexo M o F : "; cin>>e[i].sexo; } } void ModificarEmpleado(char nombre[], empleado e[], int cant) { cout<<"Nuevos Datos: "<<endl; for (int i=0;i<cant;i++) { if (strcmp(nombre,e[i].nombre)==0) { cout<<"Nombre : "; cin>>e[i].nombre; cout<<"Edad : "; cin>>e[i].edad; cout<<"Sexo M o F : "; cin>>e[i].sexo; } } } void mostrarEmpleados(empleado e[], int cant) { for (int i=0;i<cant;i++) { cout<<"Nombre : "<<e[i].nombre<<endl; cout<<"Edad : "<<e[i].edad<<endl; cout<<"Sexo : "<<e[i].sexo<<endl; } } void mostrarEmpleado(char nombre[], empleado e[], int cant) { for (int i=0;i<cant;i++) {

if (strcmp(nombre,e[i].nombre)==0){ cout<<"Nombre : "<<e[i].nombre<<endl; cout<<"Edad : "<<e[i].edad<<endl; cout<<"Sexo : "<<e[i].sexo<<endl; } } } void Menu() { cout<<"\t\t\t\t======"<<endl; cout<<"\t\t\t\t MENU"<<endl; cout<<"\t\t\t\t======"<<endl; cout<<"[1] LLenar Empleado"<<endl; cout<<"[2] Mostrar Un Empleado"<<endl; cout<<"[3] Mostrar Todos Los Empleados "<<endl; cout<<"[4] Modificar Un Empleado"<<endl; cout<<"Ingrese Opcion"<<endl; } int main () { int cant,op; empleado emp[50]; char nombre[32],rpta; char tem[2]; do{ Menu(); cin>>op; switch(op) { case 1: cout<<"Ingrese Cantidad "<<endl; cin>>cant; llenarEmpleado(emp,cant); break; case 2: cout<<"Ingrese Nombre"<<endl; cin>>nombre; mostrarEmpleado(nombre, emp, cant); break; case 3: cout<<"Lista De Empleados "<<endl; mostrarEmpleados(emp,cant); break; case 4: cout<<"Ingrese Nombre"<<endl; cin>>nombre; ModificarEmpleado(nombre, emp,cant); break; } cout<<"DESEA CONTINUAR S/N"<<endl;

cin>>rpta; }while(rpta == 's' || rpta == 'S'); system("pause"); return 0; }

You might also like