Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
(U N I V E R S I D A D D E C A N A D E A M E R I C A)
Código : 171301
Créditos : 4.0
Ciclo : III
GUIA DE LABORATORIO Nº 1
FUNCIONES, SOBRECARGA DE FUNCIONES, MACROS,
PREPROCESADOR y ARREGLOS UNIDIMENSIONALES
OBJETIVOS
PARTE I: FUNCIONES
Ejem 1.
#include <iostream>
Using namespace std;
// Definicion de la funcion
int fun(int a)
{ a=50*a+10;
return a;
}
// Programa principal
int main()
{ int x
cout<<"Ingrese un numero entero:"; //variable local
cin>>x;
cout<<"Valor en x "<<x<<endl;
cout<<"Nuevo Valor de x "<<fun(x)<<endl;
cout<<"Valor en x "<<x<<endl;
}
Ejem 2.
#include <iostream>
using namespace std;
// forma clasica de pasar argumentos puntero a las funciones
//Definicion de la funcion
void fun(int *a)
{ *a=50+(*a)*10;
}
Ejem 3.
#include <iostream>
using namespace std;
// Definicion de la funcion
void fun(int &x)
{
x=50*x+10;
}
int main()
{ int x;
cout<<"Ingrese un numero entero:"; //variable local
cin>>x; //variable local
cout<<"Valor en x "<<x<<endl;
fun(x); // llamada a funcion
cout<<"Nuevo Valor de x "<<x<<endl;
}
Ejem 4.
// utilizando el algoritmo swap con una funcion
#include <iostream>
using namespace std;
void swap(int *a, int *b)
{ //intercambiando
int temp=*a;
*a=*b;
*b=temp;
cout<<"\nValor final en temp = "<<temp<<endl;
}
//progrma principal
int main()
{
int x,y;
cout<<"Ingrese dos enteros "<<endl;
cin>>x>>y;
cout<<"Valor inicial en x = "<<x<<endl;
cout<<"Valor inicial en y = "<<y<<endl;
swap(&x,&y); //llamada a la funcion de intercambio
cout<<"Valor final en x = "<<x<<endl;
cout<<"Valor final en y = "<<y<<endl;
}
Ejem 5.
#include <iostream>
using namespace std;
// Hallando la media
//Definicion de funciones
float media2(float n1,float n2)
{
return (n1+n2)/2;
}
//Funcion principal
int main()
{ float media,x1,x2,x3;
cout<<"Ingrese 3 numeros reales:";
cin>>x1>>x2>>x3;
media=media2(x1,x2);
cout<<"media de "<<x1<<" y "<<x2<<" es: "<<media<< endl;
media=media3(x1,x2,x3);
cout<<"media de "<<x1<<", "<<x2<<", "<<x3<<" es:"<<media<< endl;
}
Ejem 6.
#include <iostream>
using namespace std;
// Hallando la media
//Funcion principal
int main()
{
float med,x1,x2,x3;
double y1,y2,y3;
cout<<"Ingrese 3 numeros reales:";
cin>>x1>>x2>>x3;
med = media(x1,x2);
cout<<"media de "<<x1<<" y "<<x2<<" es: "<<med<< endl;
//media para tres float
med = media(x1,x2,x3);
cout<<"media de "<<x1<<", "<<x2<<", "<<x3<<" es:"<<media<< endl;
//media para tres doubles
med = media(y1,y2,y3);
cout<<"media de "<<y1<<", "<<y2<<", "<<y3<<" es:"<<media<< endl;
}
Ejem 7.
/* cálculo del área de la base, area lateral de un cono utiliza funciones
sobrecargadas */
#include <iostream>
const float M_PI = 3.1415926;
int main()
{
double radio, gene;
cout<<"Ingrese el radio y la generatriz ";
cin>>radio>>gene;
Ejem 8.
#include <iostream>
using namespace std;
// uso de macros
#define SALUDO "BIENVENIDO A ALGORITMOS Y ESTRUCTURA DE DATOS"
int main()
{
cout<<SALUDO<<endl;
}
Ejem 9.
#include <iostream>
using namespace std;
// uso de macros
#define SALUDO "Buenas tardes CodeBlock"
#define PROGRAM int main()
#define BEGIN {
#define END }
#define WRITE cout
#define READLN cin.get()
#define WRITELN endl
PROGRAM
BEGIN
WRITE<<SALUDO<<WRITELN;
READLN;
END
Ejem 10.
Ahora, se presenta una nueva versión del programa anterior. Obsérvese que la
definición de las macros se guardan en un archivo de cabecera (header) y para
este caso almacenar en un archivo llamado pascal.h
//archivo pascal.h
#include <iostream>
PROGRAM
BEGIN
WRITE<<SALUDO<<WRITELN;
READLN;
END
int main()
{
int a, b, max;
cout<<"Ingrese dos enteros diferentes: "<<endl;
cin>>a>>b;
max=MAXIMO(a,b);
cout<<"El maximo es: "<<max<<endl;
}
Ejem 12.
/* En este programa debe editar 2 archivos, una con extensión h y la otra con
extensión cpp, en este último debe incluir el archivo de librería digitos.h y luego
proceda a compilar. El archivo digitos.h no se compila */
/* Programa que muestra los dígitos de un numero entero, calcula la suma y lo
muestra utilizando macros */
#include <iostream>
#include "digitos.h"
using namespace std;
int main()
{ int a,d,s=0;
ESCRIBIR("Ingrese un numero:");
LEER(a);
ESCRIBIR("Los Digitos son:");
MIENTRAS(a)
INICIO
DIGITO(a,d);
OUT(d);
ACUMULAR(s,d);
CAMBIAR(a);
FIN
CAMBIARLINEA;
ESCRIBIR("La Suma es:");
OUT(s);CAMBIARLINEA;
PAUSA;
}
/* Editar un nuevo archivo y escribir las instrucciones líneas abajo y grabar con el
nombre digitos.h */
#ifndef H_DIGITOS
#define H_DIGITOS
#define LEER(a) cin>>a
#define ESCRIBIR(s) cout<<s
#define MIENTRAS(a) while(a!=0)
#define DIGITO(a,d) d=a%10
#define ACUMULAR(s,d) s+=d
#define CAMBIAR(a) a=a/10
#define OUT(x) cout<<x<<" "
#define CAMBIARLINEA cout<<endl
#define INICIO {
#define FIN }
#define PAUSA system("pause")
#endif
Ejem 13.
#include <iostream>
#include <iomanip>
using namespace std;
const int N=10; // N es una constante tipo entera;
//
//Programa Principal
int main()
{ int i, A[N]={0}; //Inicializa el vector A con 0 todos sus elementos
cout<<"VECTOR INICIALIZADA CON CEROS\n";
for(i=0;i<N;i++)
cout<<"A["<<i<<"]="<<setw(3)<<A[i]<<endl;
/*setw, es usado para establecer el ancho del campo (separacion de los datos)
la misma está en la libreria iomanip.h */
cout<<"\nVECTOR INICIALIZADA CON EL VALOR DEL INDICE POR 3\n";
for(i=0;i<N;i++)
{ A[i]=i*3;
cout<<"A["<<i<<"]="<<setw(3)<<A[i]<<endl;
}
}
Ejm. 14
#include <iostream>
#include <iomanip>
const int N=50; // N es una constante tipo entera
//Definición de las funciones
void LlenarAlfa(char a[], int &n)
{ int i=0; char k;
for(k=’A’;k<=’Z’;k++;i++)
a[i]=k;
n=i;
}
//Programa Principal
int main()
{ int n;
char A[N]; //A es un vector que almacena los caracteres alfabéticos
LlenarAlfa(A,n);
Print(A, n);
}
PROBLEMAS PROPUESTOS
1. Dado un número entero positivo, se pide elaborar una función que acepte
como parámetro dicho numero para luego evaluar la raíz cuadrada. No
debe emplear la función sqrt(). Resolver el problema usando paso por valor.
2. Plantear el mismo problema, pero esta vez usando paso de parámetros por
referencia.
3. Escribir una función que acepte como entrada un número entero positivo,
para luego determinar el digito mayor y el digito menor, para ello plantear el
problema usando paso de parámetros por referencia.
4. Escribir tres funciones donde cada uno de ellos acepte como entrada un
número entero positivo para luego calcular el equivalente de dicho número
en base 2, 8 y 16 respectivamente.
5. Los ángulos se miden en grados(°), minutos(') y los segundos("). Existen
360 grados en un círculo, 60 minutos en un grado y 60 segundos en un
minuto. Escribir una función que acepte como parámetros los 3 datos, por
cada medida, para luego devolver la suma.
Ejemplo: 74° 29' 105" + 105° 8' 12" = 179° 37' 25".
6. Escribir una función que permita generar 20 números pseudo aleatorios
basado en el método de los cuadrados medios. Consiste en tomar un
numero entero positivo al azar de 2n cifras, luego elevarlo al cuadrado,
después de este resultado, tomar las 2 n cifras centrales y repetir
indefinidamente el proceso. Ejemplo Xo=4122, luego Xo 2=16990884, luego
el nuevo numero es 9908.
7. Otro método que consiste en generar un numero pseudo aleatorio es el de
Lehmer, la misma consiste en lo siguiente. Se toma un numero al azar de n
cifras, luego se multiplica por un numero al azar de K cifras, dando lugar a
un numero de n+k cifras del cual se separan las k cifras de la izquierda,
obteniéndose un numero de n cifras del cual se resta el de K cifras que se
había separado. Ejemplo: Si Xo=4122, K=76, entonces 4122 x 76=313272,
ahora bien 3272-31=3241, este seria el nuevo numero generado.
8. Una macro puede llamar a otra macro. Escriba un programa que utilice
macro(s) para hallar el máximo y el mínimo de tres números.
9. Escriba un programa que utilice macros para hallar todas las funciones
trigonométricas de un ángulo. Recuerde que las funciones trigonométricas
de C/C++ trabajan con el ángulo en radianes.
10. Escriba una librería donde defina funciones trigonométricas (archivo
TRIGO.H) y luego escriba un programa que pruebe dicha librería, de tal
manera que corra el programa para diferentes angulos que usted pueda
ingresar.
11. Escribir un programa que permita escribir la librería gases.h, de tal manera
que evalué las macros para las siguientes expresiones:
27R 2Tc2
a=
64Pc
Donde el valor de R es la constante universal de los gases y su valor es
igual a 0.082057, Tc, Pc es la temperatura crítica y presión critica
respectivamente
#include<iostream>
using namespace std;
//Definicion de las funciones
// programa principal
int main()
{ int n, f; char c;
cout<<"Ingrese un numero entero:";
cin>>n;
cout<<endl;
Proceso(n);
cout<<"Numero de filas:";cin>>f;
cout<<"Ingrese caracter:";cin>>c;
cout<<endl;
cout<<"Esta es la figura generada\n\n";
Proceso(f,c);
}
17. Escribir un programa que permite ingresar 2 números enteros mayor o igual
que 2 dígitos, para luego pasar los dígitos comunes a un vector, si en
ambos hay dígitos repetidos, solo debe considerar uno de ellos. Finalmente
imprimir el vector.
18. Suponga que a Ud. lo designan para participar como jurado calificador en el
concurso de belleza de N señoritas para el trono de Mis Perú, los
organizadores han establecido 5 criterios de evaluación que son los
siguientes:
Belleza, desenvolvimiento, traje de baño, traje de noche, medidas del
forma aleatoria para cada criterio y por cada participante, para luego escribir