Está en la página 1de 23

FUNDAMENTOS DE ALGORITMOS

UNIDAD 2
SESION 09
UNIDAD 2: arreglos

SESIÓN 9:

• Funciones definidas por el usuario


reflexiona:

¿Qué es una función en


programación?
¿Cual es su importancia?
Logro de sesión

Al término de la sesión, el estudiante resuelve ejercicios con


funciones, con precisión y lógica.

Temario:
Funciones de encabezados propias. (Bibliotecas)
PROBLEMAS
Problemas

Problema 1

Crear una biblioteca propia de usuario llamado libreria.h, en la


cual implementara las siguientes funciones saludoInicio(),
saludoFin() y sumar2Numeros(int a, int b).

ING. CÉSAR EDINSON AGUIRRE RODRÍGUEZ


Problema 1

using namespace std;

void saludoInicio(){
cout<<"*************************\n";
cout<<"* Inicio del Programa \n";
cout<<"*************************\n";
}

int sumar2Numeros(int a, int b){


return (a+b);
}

void saludoFin(){
cout<<"\n*************************\n";
cout<<"* Fin del Programa \n";
cout<<"*************************\n";
}

libreria.h

ING. CÉSAR EDINSON AGUIRRE RODRÍGUEZ


Problema 1

#include <iostream>
#include <conio.h>
#include "libreria.h"

using namespace std;

int main(){

int n1,n2,suma;
saludoInicio();
cout<<"Ingresar numero 1: "; cin>>n1;
cout<<"Ingresar numero 2: "; cin>>n2;

suma = sumar2Numeros(n1,n2);
cout<<endl<<"La suma es: "<<suma<<endl;

saludoFin();
return 0;
}

problema1.cpp

ING. CÉSAR EDINSON AGUIRRE RODRÍGUEZ


Problemas

Problema 2

Crear una biblioteca propia de usuario llamado calculos.h, en la


cual implementara las siguientes funciones int potencia(int
base, int exponente), int factorial(int numero), y
calcular la siguiente serie.

11 22 33 𝑛𝑛
𝑆= + + +⋯ +
1! 2! 3! 𝑛!

ING. CÉSAR EDINSON AGUIRRE RODRÍGUEZ


Problema 2

int potencia(int base, int expo){


int f = 1;
for(int i = 1; i<=expo; i++){
f = f * base;
}
return f;
}

int factorial(int numero){


int f = 1;
for(int i = 1; i<=numero; i++){
f = f * i;
}
return f;
}

calculos.h

ING. CÉSAR EDINSON AGUIRRE RODRÍGUEZ


Problema 2

#include <iostream>
#include "calculos.h"
using namespace std;

int main(){
int n;
float s = 0;
cout<<"Ingresar limite: ";
cin>>n;

for(int i=1;i <= n; i++){


s = s + (float) potencia(i,i) / (float) factorial(i);
}
cout<<"\n La suma es: "<<s;
return 0;
}
problema2.cpp

ING. CÉSAR EDINSON AGUIRRE RODRÍGUEZ


Problemas

Números pseudo aleatorios en C++

• La función rand genera un entero sin signo entre 0 y RAND_MAX (una


constante simbólica definida en el encabezado <stdlib.h>)

• La función srand toma un entero unsigned como argumento y


establece la semilla de la función rand para producir una secuencia
diferente de números aleatorios para cada ejecución del programa.

• Si queremos randomizar sin tener que introducir una semilla diferente


cada vez, podemos utilizar la siguiente instrucción: srand(time(NULL));

ING. CÉSAR EDINSON AGUIRRE RODRÍGUEZ


Problemas

Problema 3

Crear la biblioteca calculos2.h, la función que retorne números


aleatorios, se deberá ingresar el rango de números, int
aleatorio(int num1 , int num2).

ING. CÉSAR EDINSON AGUIRRE RODRÍGUEZ


Problema 3

int randmon(int n1, int n2){


return n1 + (rand() % n2);
}

int randmonSemilla(int n1, int n2){


return n1 + (rand() % n2);
}

int randmonTime(int n1, int n2){


return n1 + (rand() % n2);
}

calculos2.h

ING. CÉSAR EDINSON AGUIRRE RODRÍGUEZ


Problema 3

#include <iostream> do{


#include <stdlib.h> srand(time(NULL));
/* contiene la función time */ cout<<"Funcion randmonTime(1,100): "
#include <time.h> <<randmonTime(1,100)<<"\n";
using namespace std; cout<<"Desea continuar(S) :";
cin>>op;
int main(){ }while(op == 's' or op == 'S');
char op; cout<<endl;

do{ return 0;
cout<<"Funcion randmon(1,100): " }
<<randmon(1,100)<<"\n";
cout<<"Desea continuar(S) :";
cin>>op;
}while(op == 's' or op == 'S');
cout<<endl;

do{
srand(77);
cout<<"Funcion randmonSemilla(77,1,100): "
<<randmonSemilla(1,100)<<"\n";
cout<<"Desea continuar(S) :";
cin>>op;
}while(op == 's' or op == 'S');
cout<<endl;

ING. CÉSAR EDINSON AGUIRRE RODRÍGUEZ


Problemas

Problema 4

Crear una biblioteca propia de usuario llamado series.h, en la


cual implementara las siguientes funciones int numNprimo
(int n_primo), int numNFibo(int n_fibo), y calcular la
siguiente serie.

0 1 1 2 3 𝑛
𝑆= + + + + +⋯ +
2 3 5 7 11 𝑛

ING. CÉSAR EDINSON AGUIRRE RODRÍGUEZ


Problema 4

int numNprimo(int lim){ int numNFibo(int lim){


int num, k, cont, nPrimo; int n,x=0,y=1,z,nfibo=0;
num = 2; for(int i=1;i<=lim;i++){
k = 1;
for(int i=2; k<=lim;i++){ if(i == 1){
cont = 0; nfibo = x;
for(int j=1;j<=i;j++){ } else if(i == 2){
if(i%j==0){ nfibo = y;
cont++; } else{
} z = x + y;
} nfibo = z;
if(cont==2){ x = y;
nPrimo = i; y = z;
k++; }
} }
} return nfibo;
return nPrimo; }
}

series.h
ING. CÉSAR EDINSON AGUIRRE RODRÍGUEZ
Problema 4

#include <iostream>
#include "series.h"
using namespace std;

int main(){

int lim;
float s = 0;
cout<<"Ingresar limite: ";
cin>>lim;

for(int i = 1; i <= lim; i++){


s = s + (float) numNFibo(i) / (float) numNprimo(i);
}

cout<<"La sumatoria es: "<<s;


return 0;
}

ING. CÉSAR EDINSON AGUIRRE RODRÍGUEZ


Problemas

Problema 5

Crear una biblioteca propia de usuario llamado series2.h, en la


cual implementara las siguientes funciones int numNprimo
(int n_primo), int numNFibo(int n_fibo), int
potencia(int b, int e) y calcular la siguiente serie.
Considerar 00 = 1.

00 11 11 22 33 𝑛𝑛
𝑆 = 2 + 3 + 5 + 7 + 11 + ⋯ + 𝑛
2 3 5 7 11 𝑛

ING. CÉSAR EDINSON AGUIRRE RODRÍGUEZ


Problema 5

int numeroNprimo(int lim){ return p;


int num, k, cont, nPrimo; }
num = 2; }
k = 1;
for(int i=2; k<=lim;i++){ int numeroNFibo(int lim){
cont = 0; int n,x=0,y=1,z,nfibo=0;
for(int j=1;j<=i;j++){ for(int i=1;i<=lim;i++){
if(i%j==0){
cont++; if(i == 1){
} nfibo = x;
} } else if(i == 2){
if(cont==2){ nfibo = y;
nPrimo = i; } else{
k++; z = x + y;
} nfibo = z;
} x = y;
return nPrimo; y = z;
} }
}
int potencia(int b, int e){ return nfibo;
int p = 1; }
if(e == 0){
return 1;
}else{
for(int i=1; i <=e; i++){
p = p * b;
}

series2.h
ING. CÉSAR EDINSON AGUIRRE RODRÍGUEZ
Problema 5

#include <iostream>
#include "series2.h"
using namespace std;

int main(){

int lim, numFib, numPri, p_numFib, p_numPri;


float s = 0;

cout<<"Ingresar limite: "; cin>>lim;

for(int i = 1; i <= lim; i++){


numFib = numeroNFibo(i);
numPri = numeroNprimo(i);

p_numFib = potencia(numFib, numFib);


p_numPri = potencia(numPri, numPri);

s = s + (float) p_numFib / (float) p_numPri;


}

cout<<"La sumatoria es: "<<s;


return 0;
}

ING. CÉSAR EDINSON AGUIRRE RODRÍGUEZ


REFERENCIA BIBLIOGRÁFICA

LIZA ÁVILA.CÉSAR Algoritmos y su Codificación en C++. (Volumen 2)


Editorial CREASOFT, Trujillo-Perú. 1ra Edición Agosto 2002.
JOYANES, Luis.P roblemas de Metodología de la Programación. McGraw Hill,
España, 1990 *
DEITEL Y DEITEL Cómo Programar en C++. Pearson Educación, México, 2004
LANGSAM, AUGSTEIN, TENENBAUM. Estructuras de Datos con C/C++, Prentice Hall,
México, 1997.
DALE, NELLProgramación y resolución de problemas con C++/2007
¿Preguntas o comentarios?

También podría gustarte