Está en la página 1de 12

PRACTICO Nº 06

SI-120 Subprogramas

Se debe realizar el siguiente práctico haciendo el mayor uso de subprogramas, donde


corresponda.

Escribir programas en lenguaje C para cada uno de los siguientes problemas.

1. Construir una función POTEN(y, y), para calcular la potencia x y de dos números
enteros cualesquiera.
#include<iostream>
using namespace std;

int potencia(int x,int y)


{
int pot;
if(y==1){
pot=x;
}
else{
pot=x*potencia(x,y-1);
}
return pot;
}

int main()
{
int base, exponente;
cout<<"Ingrese la base"<<endl;
cin>>base;
cout<<"Ingrese el exponente"<<endl;
cin>>exponente;
cout<<"El resultado es: "<<potencia(base,exponente);
return 0;
}
2. Construir una función FAC(n) para calcular el factorial de un entero.
int factorial(int n)
{
if(n==0){
n=1;
}
else{
n=n*factorial(n-1);
}
return n;
}
int main()
{
int a,n;
cout<<"Ingrese un numero"<<endl;
cin>>a;
cout<<"El factorial de "<<a<<" es: "<<factorial(a);
return 0;
}
3. Construir un programa, que mediante funciones, para hallar la suma de la siguiente
serie, dados X y N enteros positivos:

x1 x2 x3 x4 xN
S= + + + +...+
1! 2! 3! 4! N!
#include <iostream>
#include <math.h>

using namespace std;

float potencia(float x, float n)


{
float resultado,i=1;
for (i=1; i<=n; i++)
{
resultado=pow(x,i);
}
return resultado;
}
float factorial (float n)
{
float fact=1,i=0;
if(n==0)
{
fact=1;
}
else
{
for (i=1; i<=n; i++)
{
fact=fact*i;
}
}
return fact;
}
int main()
{
float x,n,i,s=0;
cout<<"Ingrese un valor para la base de la funcion exponente en el numerador"<<endl;
cin>>x;
cout<<"Ingrese un valor para n"<<endl;
cin>>n;
for (i=1; i<=n; i++)
{
s=s+(potencia(x,i)/factorial(i));
}
cout<<"El resultado es "<<s<<endl;
return 0;
}
4. Construir un programa, que mediante funciones, halle la suma de la siguiente serie,
dados X y N enteros positivos:

x1 x3 x5 x7 xN
S= - + - +/- . . .
1! 3! 5! 7! N!
#include<iostream>
using namespace std;

float pot(float b, int p)


{
int k;
float res=1;
for(k=1;k<=p;k++){
res=res*b;
}
return res;
}
int fact(int n)
{
int k,f=1;
for(k=1;k<=n;k++){
f=f*k;
}
return f;
}
int main()
{
float x,seno=0;
int n,cnt=1, cnt2=1;
cout<<"Ingrese el angulo en radianes"<<endl;
cin>>x;
cout<<"Ingrese la cantidad de elementos de la serie"<<endl;
cin>>n;
for (cnt=1; cnt<=n; cnt++)
{
seno=seno+pot(-1,cnt+1)*pot(x,cnt2)/fact(cnt2);
cnt2=cnt2+2;
}
cout<<"El resultado es: "<<seno<<endl;
return 0;
}
5. Dado un número combinatorio con parámetros n y r, obtener su valor numérico. Un
número combinatorio se define de la siguiente forma:

n n!
Combi(n, r) = = ---------- donde ‘!’ es la función factorial
r r! (n-r)!
Construir un programa que utilice una función factorial llamada FAC(n), y luego
desde el programa principal la llame de la siguiente forma:
C = FAC(n) / (FAC(r) * FAC(n-r))
#include<iostream>
using namespace std;

int factorial(int n)
{
int k,f;
f=1;
for(k=1;k<=n;k++){
f=f*k;
}
return f;
}

int main()
{
int m,n,c;
cout<<"Ingrese un numero"<<endl;
cin>>m;
cout<<"Ingrese un numero para dividir como factorial"<<endl;
cin>>n;
c=factorial(m)/(factorial(n)*factorial(m-n));
cout<<"El resultado es: "<<c;
return 0;
}
6. Construir una función que lea un valor binario X y devuelva como resultado su
equivalente decimal.
#include <iostream>
using namespace std;
int op()
{
int resultado, binario, resto=0,dig[8],i;
cout<<"Introduzca un número en codigo binario"<<endl;
cin>>binario;
for (i=0; i<8; i++)
{
dig[i]=binario%10;
binario=binario/10;
}
for (i=7;i>=0;i--)
{
resultado=(resto*2)+dig[i];
resto=resultado;
}
return resto;
}
int main()
{
int r;
r=op();
cout<<"El numero en sistema decimal es "<<r<<endl;
return 0;
}

7. Construya un procedimiento que calcule los días transcurridos entre dos fechas
cualesquiera. Cada fecha está dada en día/mes/año.
#include <iostream>
using namespace std;
int fun()
{
int dia,mes,an,c,t,s=0;
cout<<"Ingrese el dia"<<endl;
cin>>dia;
cout<<"Ingrese el mes"<<endl;
cin>>mes;
cout<<"Ingrese el año"<<endl;
cin>>an;
if (mes<1 or mes>12 or dia>31 or dia<1 or an<1)
{
cout<<"Ingrese una fecha valida"<<endl;
}
else
{
c=an*365;
while (mes>=1)
{
mes=mes-1;
if (mes==1 or mes==3 or mes==5 or mes==7 or mes== 8 or mes==10 or
mes==12)
{
s=s+31;
}
else
{
if(mes==4 or mes==6 or mes==9 or mes==11)
{
s=s+30;
}
else
{
s=s+28;
}
}
t=c+s+dia;
}
}
return t;
}
int main()
{
int f1,f2;
cout<<" FECHA 1 "<<endl;
f1=fun();
cout<<" FECHA 2 "<<endl;
f2=fun();
if (f1>f2)
{
cout<<"Hay "<<f1-f2<<" dias de diferencia"<<endl;
}
else
{
cout<<"Hay "<<f2-f1<<" dias de diferencia"<<endl;
}
return 0;
}
8. Hacer un subprograma para invertir un número N. Ej. Si N=35678, se requiere en otra
variable Z=87653.
#include <iostream>
using namespace std;

int invertir (int numero)


{
int resultado=0;
while(numero>0)
{
resultado=resultado*10;
resultado+=numero%10;
numero=numero/10;

return resultado;
}
int main()
{
int a,b;
cout<<"Ingrese un numero"<<endl;
cin>>a;
b=invertir(a);
cout<<"El numero invertido es "<<b<<endl;
return 0;
}
9. Hacer un subprograma para CIFRAR un digito de 4 dígitos en base 8.
#include <iostream>
#include <math.h>
using namespace std;

int octal()
{
int oct=0, res=0, a=0, b=1;
cout<<"Digite un numero decimal"<<endl;
cin>>a;
if(a<10000)
{
while (a!=0)
{
res=a%8;
a=a/8;
oct=oct+res*b;
b=b*10;
}
cout<<"El numero octal es "<<oct<<endl;

}
else
{
cout<<"Error digite un numero de 4 digitos por favor"<<endl;
}
return oct;
}
int main()
{
octal();
return 0;
}
10. Dado un número decimal en base 8, hacer un programa para descifra su equivalente en
base 10.
Dado un número decimal en base 8, hacer un programa para descifra su equivalente
en base 10.
#include <iostream>
#include <math.h>
using namespace std;

int OctDec(int Oct)


{
int ND=0, EXP=0;
while (Oct>0){
ND=ND+(Oct%10 * pow(8,EXP));
Oct=Oct/10;
EXP++;
}
return ND;
}
int main()
{
int NO;
cout<<"Ingrese el numero octal (base 8): ";
cin>>NO;
cout<<"El numero en decimal es: "<<OctDec(NO);
return 0;
}

Hacer subprogramas para evaluar las siguientes series:

11. Calcular la siguiente serie, donde X es un número real.

#include <iostream>
#include <math.h>

using namespace std;

float potencia(float x, float n)


{
float resultado,i=1;
for (i=1; i<=n; i++)
{
resultado=pow(x,i);
}
return resultado;
}

int main()
{
float x,n,i,s=0;
cout<<"Ingrese un valor para la base"<<endl;
cin>>x;
cout<<"Ingrese un valor para n"<<endl;
cin>>n;
for (i=1; i<=n; i++)
{
s=s+potencia(x,i);
}
cout<<"El resultado es "<<s<<endl;
return 0;
}
12. 7. Calcular el factorial de un número entero N. Donde se define como factorial de la
siguiente forma: FAC(N) = 1x2x3x.....xN; donde el factorial de cero es uno (FAC(0)
=1). FAC(N)=N!, se lee factorial (!) de N.
#include<iostream>
using namespace std;

int factorial(int n)
{
if(n==0){
n=1;
}
else{
n=n*factorial(n-1);
}
return n;
}

int main()
{
int a,n;
cout<<"Ingrese un numero"<<endl;
cin>>a;
cout<<"El factorial de "<<a<<" es: "<<factorial(a);
return 0;
}
13. Calcular la siguiente serie:
S= X/1! + X^2/2! + X^3/3! + ........X^n/n!
#include <iostream>
#include <math.h>

using namespace std;

float potencia(float x, float n)


{
float resultado,i=1;
for (i=1; i<=n; i++)
{
resultado=pow(x,i);
}
return resultado;
}
float factorial (float n)
{
float fact=1,i=0;
if(n==0)
{
fact=1;
}
else
{
for (i=1; i<=n; i++)
{
fact=fact*i;
}
}
return fact;
}
int main()
{
float x,n,i,s=0;
cout<<"Ingrese un valor para la base de la funcion exponente en el numerador"<<endl;
cin>>x;
cout<<"Ingrese un valor para n"<<endl;
cin>>n;
for (i=1; i<=n; i++)
{
s=s+(potencia(x,i)/factorial(i));
}
cout<<"El resultado es "<<s<<endl;
return 0;
}

14. Calcular la siguiente serie:


S= X/1! - X^2/2! + X^3/3! - ........(+/-)X^n/n!
#include<iostream>
using namespace std;

float pot(float b, int p)


{
int k;
float res=1;
for(k=1;k<=p;k++){
res=res*b;
}
return res;
}
int fact(int n)
{
int k,f=1;
for(k=1;k<=n;k++){
f=f*k;
}
return f;
}
int main()
{
float x,a=0;
int n,cnt=1, cnt2=1;
cout<<"Ingrese un numero para la base"<<endl;
cin>>x;
cout<<"Ingrese la cantidad de elementos de la serie"<<endl;
cin>>n;
for (cnt=1; cnt<=n; cnt++)
{
a=a+pot(-1,cnt+1)*pot(x,cnt2)/fact(cnt2);
cnt2=cnt2+1;
}
cout<<"El resultado es: "<<a<<endl;
return 0;
}
15. Hacer un programa/suprograma que lea el radio “R” de un círculo o esfera y presente
un menú con 4 opciones que permita calcular el perímetro, área y volumen
respectivamente. Defina los subprogramas necesarios para resolver de la forma más
modular posible.

------------------ MENU -----------------


[1] - Cálculo del perímetro del circulo P = 2 * PI * R
[2] - Cálculo del Volumen
[3] - Cálculo del área
[4] - Fin
Seleccionando las opciones de 1, 2 o 3 el programa realiza el cálculo correspondiente y
retorna al menú, si se elige la opción 4 finaliza el programa; en otro caso debe dar
error de opción y regresa al menú.

También podría gustarte