Está en la página 1de 23

UNIVERSIDAD NACIONAL FEDERICO VILLARREAL

FACULTAD DE INGENIERÍA INDUSTRIAL Y DE SISTEMAS

ESCUELA UNIVERSITARIA DE EDUCACIÓN A DISTANCIA

MONOGRFIA DE ALGORITMOS

ALUMNO : ULLOA REA, RAÚL ALONSO

CURSO : ALGORITMOS

PROFESOR : YURI POMACHAGUA BASUALDO

CICLO-SECCIÓN : I-B

2017
SPEUDOCODIGO

//Usando La Formula Herón


Funcion Area <- AreaTrianguloABC ( a, b, c )
Area,semiperimetro Es Real
semiperimetro=(a+b+c)/2
Area=(semiperimetro*(semiperimetro-a)*(semiperimetro-b)*(semiperimetro-c))^(1/2)
Fin Funcion
//Usando Teorema de Pitagoras
Funcion Area <- AreaPoligonoReg ( NumLados,Radio )
Area,Apotema,Perimetro Es Real
Perimetro=Numlados*Radio
Apotema=((Radio^2)-((Radio/2)^2))^(1/2)
Area=(Perimetro*Apotema)/2
Fin Funcion
// Area Esfera Teniendo Solo Radio
Funcion Area <- AreaEsfera( Radio )
Area,ConsPI Es Real
ConsPI=3.1416
Area=(4*ConsPI)*((Radio)^2)
Fin Funcion

// Sub Menu Areas


SubProceso SubMenu01
OpcSM,a,b,c,Radio Es Entero
OpcSM=0
Mientras (OpcSM<>4) Hacer
//Borrar Pantalla
Imprimir "[ 1 ] Áreas"
Imprimir " [1] Triángulo de lados a, b y c"
Imprimir " [2] Hexágono regular de radio R"
Imprimir " [3] Esfera de radio R"
Imprimir " [4] Salir"
Imprimir " "
Imprimir Sin Saltar "Ingrese Opcion [1] Áreas -";Leer OpcSM
Segun OpcSM Hacer
1: //BorrarPantalla
Repetir
Imprimir Sin Saltar "Ingrese el lado medida en cms. del
lado a: "; Leer Sin Saltar a
Hasta Que (a>0)
Repetir
Imprimir Sin Saltar "Ingrese el lado medida en cms. del
lado b: "; Leer Sin Saltar b
Hasta Que (b>0)
Repetir
Imprimir Sin Saltar "Ingrese el lado medida en cms. del
lado c: "; Leer Sin Saltar c
Hasta Que (c>0)
Imprimir "El Area del Triangulo es : ",AreaTrianguloABC(a,b,c)
Imprimir " "
2: //Borrar Pantalla
Repetir
Imprimir Sin Saltar "Ingrese el Radio en cms. Para Area de
Hexagono: "; Leer Sin Saltar Radio
Hasta Que (Radio>0)
Imprimir "El Area del Hexagono es : ",AreaPoligonoReg(6,Radio)
Imprimir " "
3: //Borrar Pantalla
Repetir
Imprimir Sin Saltar "Ingrese el Radio en cms. Para Area de
Esfera: "; Leer Sin Saltar Radio
Hasta Que (Radio>0)
Imprimir "El Area de la Esfera es : ",AreaEsfera(Radio)
Imprimir " "
Fin Segun

Fin Mientras
FinSubProceso
// Sub Menu Volúmenes
SubProceso SubMenu02
OpcSM,a,b,c Es Entero
OpcSM=0
Mientras (OpcSM<>4) Hacer
Borrar Pantalla
Imprimir "[ 2 ] Volúmenes"
Imprimir " [1] Cono"
Imprimir " [2] Cilindro"
Imprimir " [3] Esfera"
Imprimir " [4] Salir"
Imprimir " "
Imprimir Sin Saltar "Ingrese Opcion [2] Volúmenes -";Leer OpcSM
Segun OpcSM Hacer
1: //BorrarPantalla
Repetir
Imprimir Sin Saltar "Ingrese el lado medida en cms. del
lado a: "; Leer Sin Saltar a
Hasta Que (a>0)
Repetir
Imprimir Sin Saltar "Ingrese el lado medida en cms. del
lado b: "; Leer Sin Saltar b
Hasta Que (b>0)
Repetir
Imprimir Sin Saltar "Ingrese el lado medida en cms. del
lado c: "; Leer Sin Saltar c
Hasta Que (c>0)
Imprimir "El Area del Triangulo es : ",AreaTrianguloABC(a,b,c)
Imprimir " "
2: Borrar Pantalla
Imprimir "para habilitar"

3: Borrar Pantalla
Imprimir "para habilitar"
Fin Segun

Fin Mientras
FinSubProceso

Algoritmo Menu
opc Es Caracter
Num,a,b,c Es Entero

opc='S'
Mientras (opc <> 'N') o (opc <> 'n') Hacer
BorrarPantalla
Imprimir "[ 1 ] Áreas"
Imprimir " [1] Triángulo de lados a, b y c"
Imprimir " [2] Hexágono regular de radio R"
Imprimir " [3] Esfera de radio R"
Imprimir " [4] Salir"
Imprimir "[ 2 ] Volúmenes"
Imprimir " [1] Cono"
Imprimir " [2] Cilindro"
Imprimir " [3] Esfera"
Imprimir " [4] Salir"
Imprimir "[ 3 ] Matrices"
Imprimir " [1] Transpuesta de una matriz de orden M x N"
Imprimir " [2] Multiplicación de 2 matrices de M x N"
Imprimir " [3] Suma de las Diagonales de una matriz cuadrada"
Imprimir " [4] Salir"
Imprimir ""
Imprimir Sin Saltar " Ingrese una opción [#] -";Leer Sin Saltar Num
Segun Num Hacer
1: SubMenu01
2:
Imprimir "Llamar Procedimiento Volumenes"
leer opc
3:
Imprimir "Llamar Procedimiento Matrices"
leer opc
Fin Segun
Imprimir ""
Imprimir ""
Imprimir Sin Saltar" Desea continuar [S/N]? -";Leer Opc

Fin Mientras
Imprimir "Ud. Decidio Salir Presionando ", opc
FinAlgoritmo
CODIGO C++

#include<iostream>
#include <sstream>
#include <cmath>
#include <string.h>
using namespace std;

/***********************************************/
/* FUNCIONES DE AREAS Y VOLUMENES */
/***********************************************/
float fAreaTriangulo(float ladoA, float ladoB, float ladoC)
{
float semiPerimetro, res;
semiPerimetro=(ladoA+ladoB+ladoC)/2;
res=pow(semiPerimetro*(semiPerimetro-ladoA)*(semiPerimetro-ladoB)*(semiPerimetro-
ladoC),0.5);

cout << "==============================* FORMULA


*======================================" <<endl;
cout << "# (semiPerimetro*(semiPerimetro-A)*(semiPerimetro-B)*(semiPerimetro-
C))^(1/2) #" << endl;
cout <<
"==============================================================================="
<<endl;
cout << "# semiPerimetro=(A+B+C)/2 #" << endl;
cout <<
"==============================================================================="
<<endl <<endl;
cout << " El semiPerimetro es igual : " << semiPerimetro << endl;
return res;
}

float fAreaHexagono(float radio)


{
float res, perimetro, area, catetoA, catetoB, hipotenusa, apotema;
perimetro=radio*6;
catetoB=radio/2;
hipotenusa=radio;
catetoA=pow(pow(hipotenusa,2) - pow(catetoB,2),0.5);
apotema=catetoA;

res=(perimetro*apotema)/2;
cout<<" "<<endl;
cout << "=============* FORMULA *==============" <<endl;
cout << "# (perimetro*apotema)/2 #" << endl;
cout << "======================================" <<endl <<endl;
return res;
}

float fAreaEsfera(float radio)


{
float res, pi;
pi=3.1415;
res=4*pi*pow(radio,2);
cout<<" "<<endl;
cout << "===============* FORMULA *==============" <<endl;
cout << "# 4*Pi*(radio)^2 #" << endl;
cout << "========================================" <<endl <<endl;
return res;
}

float fVolumenCono(float radio, float h)


{
float res, pi;
pi=3.1415;
res=(pi*pow(radio,2)*h)/3;
cout<<" "<<endl;
cout << "================* FORMULA *==================" <<endl;
cout << "# (1/3)*Pi*(radio)^2*hipotenusa #" << endl;
cout << "=============================================" <<endl <<endl;
return res;
}

float fVolumenCilindro(float radio, float h)


{
float res, pi;
pi=3.1415;
res=pi*pow(radio,2)*h;
cout<<" "<<endl;
cout << "================* FORMULA *==================" <<endl;
cout << "# pi*radio^2*hipotenusa #" << endl;
cout << "=============================================" <<endl <<endl;
return res;
}

float fVolumenEsfera(float radio)


{
float res, pi;
pi=3.1415;
res=(4*pi*pow(radio,3))/3;
cout<<" "<<endl;
cout << "================* FORMULA *===============" <<endl;
cout << "# (4/3)*pi*radio^3 #" << endl;
cout << "==========================================" <<endl <<endl;
return res;
}

/***********************************************/
/* PROCEDIMIENTOS DEL MENU PRINCIPAL */
/***********************************************/
//Declaracion de procedimientos para ser invocados desde el programa principal
void menu();
void opcion_1(int);
void opcion_2(int);
void opcion_3(int);

void opcion_1_1();
void opcion_1_2();
void opcion_1_3();
void opcion_2_1();
void opcion_2_2();
void opcion_2_3();
void opcion_3_1();
void opcion_3_2();
void opcion_3_3();

//Procedimiento para mostrar Menu


void menu()
{
system("cls");
cout << "- MONOGRAFIA FINAL DEL CURSO DE ALGORITMO - " <<endl;
cout << "--------------------------------------------" <<endl;
cout << "" <<endl;
cout << "++++++++++++++++++++++++++++++++" <<endl;
cout << "* MENU PRINCIPAL *" <<endl;
cout << "++++++++++++++++++++++++++++++++" <<endl;
cout << "" <<endl;
cout << "[1] Areas de :" <<endl;
cout << " [1] Triangulo de lados a, b y c" <<endl;
cout << " [2] Hexagono regular de radio R" <<endl;
cout << " [3] Esfera de radio R" <<endl;
cout << " [4] Salir" <<endl;
cout << "[2] Volumenes de :" <<endl;
cout << " [1] Cono" <<endl;
cout << " [2] Cilindro" <<endl;
cout << " [3] Esfera" <<endl;
cout << " [4] Salir" <<endl;
cout << "[3] Matrices" <<endl;
cout << " [1] Transpuesta de una matriz de orden MxN" <<endl;
cout << " [2] Multiplicacion de 2 matrices MxN" <<endl;
cout << " [3] Suma de las diagonales de una matriz cuadrada" <<endl;
cout << " [4] Salir" <<endl;
cout << "" <<endl;
}

//Procedimiento para solicitar datos de menu 1


void opcion_1(int opcionSubMenu)
{
//Evaluo opciones del sub menu
switch (opcionSubMenu)
{
case 1: opcion_1_1();
break;
case 2: opcion_1_2();
break;
case 3: opcion_1_3();
break;
case 4: break;
}
}

//Procedimiento para solicitar datos de menu 2


void opcion_2(int opcionSubMenu)
{
//Evaluo opciones del sub menu
switch (opcionSubMenu)
{
case 1: opcion_2_1();
break;
case 2: opcion_2_2();
break;
case 3: opcion_2_3();
break;
case 4: break;
}
}

//Procedimiento para solicitar datos de menu 3


void opcion_3(int opcionSubMenu)
{
//Evaluo opciones del sub menu
switch (opcionSubMenu)
{
case 1: opcion_3_1();
break;
case 2: opcion_3_2();
break;
case 3: opcion_3_3();
break;
case 4: break;
}
}

//Procedimiento para solicitar datos de menu 1.1


void opcion_1_1()
{
int ladoA, ladoB, ladoC;
float area;

cout << " 1.1 Calcular Area del triangulo de lados a, b y c" <<endl;

//Iteracion para validar que se ingrese un numero mayor a cero


do
{
cout << " Ingrese lado A: ";
cin >> ladoA;
if (ladoA < 1)
{
cout << " El lado debe ser mayor a cero" <<endl;
}
}while (ladoA<1);

//Iteracion para validar que se ingrese un numero mayor a cero


do
{
cout << " Ingrese lado B: ";
cin >> ladoB;
if (ladoB < 1)
{
cout << " El lado debe ser mayor a cero" <<endl;
}
}while (ladoB<1);

//Iteracion para validar que se ingrese un numero mayor a cero


do
{
cout << " Ingrese lado C: ";
cin >> ladoC;
if (ladoC < 1)
{
cout << " El lado debe ser mayor a cero" <<endl;
}
}while (ladoC<1);

area=fAreaTriangulo(ladoA, ladoB, ladoC);

cout << " --------------------------------- " << endl;


cout << " El area del triangulo es: " << area << endl;
cout << " --------------------------------- " << endl;
}

//Procedimiento para solicitar datos de menu 1.2


void opcion_1_2()
{
float radio, area;
radio=0;

cout << " 1.2 Calcular Area del hexagono" <<endl;

//Iteracion para validar que se ingrese un numero mayor a cero


do
{
cout << " Ingrese Radio: ";
cin >> radio;
if (radio < 1)
{
cout << " El radio debe ser mayor a cero" <<endl;
}
}while (radio<1);

area=fAreaHexagono(radio);

cout << " --------------------------------- " << endl;


cout << " El area del hexagono es: " << area << endl;
cout << " --------------------------------- " << endl;
}

//Procedimiento para solicitar datos de menu 1.3


void opcion_1_3()
{
float radio, area;
radio=0;

cout << " 1.3 Calcular Area de una esfera" <<endl;

//Iteracion para validar que se ingrese un numero mayor a cero


do
{
cout << " Ingrese Radio: ";
cin >> radio;
if (radio < 1)
{
cout << " El radio debe ser mayor a cero" <<endl;
}
}while (radio<1);

area=fAreaEsfera(radio);

cout << " --------------------------------- " << endl;


cout << " El area de la esfera es: " << area << endl;
cout << " --------------------------------- " << endl;
}

//Procedimiento para solicitar datos de menu 2.1


void opcion_2_1()
{
float radio, hipotenusa, volumen;
radio=0;
hipotenusa=0;

cout << " 2.1 Calcular Volumen de un cono" <<endl;

//Iteracion para validar que se ingrese un numero mayor a cero


do
{
cout << " Ingrese radio: ";
cin >> radio;
if (radio < 1)
{
cout << " El radio debe ser mayor a cero" <<endl;
}
}while (radio<1);

//Iteracion para validar que se ingrese un numero mayor a cero


do
{
cout << " Ingrese hipotenusa: ";
cin >> hipotenusa;
if (hipotenusa < 1)
{
cout << " La hipotenusa debe ser mayor a cero" <<endl;
}
}while (hipotenusa<1);

volumen=fVolumenCono(radio,hipotenusa);

cout << " --------------------------------- " << endl;


cout << " El volumen del cono es: " << volumen << endl;
cout << " --------------------------------- " << endl;
}

//Procedimiento para solicitar datos de menu 2.2


void opcion_2_2()
{
float radio, hipotenusa, area;
radio=0;
hipotenusa=0;

cout << " 2.2 Calcular Volumen de un cilindro" <<endl;

//Iteracion para validar que se ingrese un numero mayor a cero


do
{
cout << " Ingrese radio: ";
cin >> radio;
if (radio < 1)
{
cout << " El radio debe ser mayor a cero" <<endl;
}
}while (radio<1);
//Iteracion para validar que se ingrese un numero mayor a cero
do
{
cout << " Ingrese hipotenusa: ";
cin >> hipotenusa;
if (hipotenusa < 1)
{
cout << " La hipotenusa debe ser mayor a cero" <<endl;
}
}while (hipotenusa<1);

area=fVolumenCilindro(radio,hipotenusa);

cout << " --------------------------------- " << endl;


cout << " El volumen del cilindro es: " << area << endl;
cout << " --------------------------------- " << endl;
}

//Procedimiento para solicitar datos de menu 2.3


void opcion_2_3()
{
float radio, volumen;
radio=0;

cout << " 2.3 Calcular Volumen de una esfera" <<endl;

//Iteracion para validar que se ingrese un numero mayor a cero


do
{
cout << " Ingrese radio: ";
cin >> radio;
if (radio < 1)
{
cout << " El radio debe ser mayor a cero" <<endl;
}
}while (radio<1);

volumen=fVolumenEsfera(radio);

cout << " --------------------------------- " << endl;


cout << " El volumen de una esfera es: " << volumen << endl;
cout << " --------------------------------- " << endl;
}
//Procedimiento para solicitar datos de menu 3.1
void opcion_3_1()
{
int fila,columna,i,j,longitudMaxima;
cout << " 3.1 Matriz - Transpuesta de una matriz de orden MxN" <<endl;
longitudMaxima=10;
int arr[longitudMaxima][longitudMaxima];

//Iteracion para validar que se ingrese un numero menor o igual al maximo de la matriz
do
{
cout << " Ingrese el numero de filas: ";
cin >> fila;
if (fila<1)
{
cout << " La fila no puede ser negativa " << longitudMaxima << endl;
}

if (fila > longitudMaxima)


{
cout << " La fila debe ser menor o igual a " << longitudMaxima << endl;
}
}while (fila<1 || fila>longitudMaxima);

//Iteracion para validar que se ingrese un numero menor o igual al maximo de la matriz
do
{
cout << " Ingrese el numero de columnas: ";
cin >> columna;
if (columna<1)
{
cout << " La columna no puede ser negativa " << longitudMaxima <<
endl;
}

if (columna > longitudMaxima)


{
cout << " La columna debe ser menor o igual a " << longitudMaxima <<
endl;
}
}while (columna<1 || columna>longitudMaxima);

//Matriz
cout<<endl;
for(i=0;i<fila;i++)
{
for(j=0;j<columna;j++)
{
cout<<" Ingrese el numero de la fila "<<i+1<<", columna "<<j+1<<": ";
cin>>arr[i][j];
}
}
cout<<endl;

cout<<" Matriz original"<<endl;


for(i=0;i<fila;i++)
{
cout<<" ";
for(j=0;j<columna;j++)
{
cout<<arr[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;

cout<<" Matriz invertido"<<endl;


for(i=0;i<columna;i++)
{
cout<<" ";
for(j=0;j<fila;j++)
{
cout<<arr[j][i]<<" ";
}
cout<<endl;
}
cout<<endl;

//Procedimiento para solicitar datos de menu 3.2


void opcion_3_2()
{
int fila,columna,i,j,longitudMaxima;
longitudMaxima=10;
cout << " 3.1 Matriz - Multiplicacion de 2 matrices MxN" <<endl;
int arrM[longitudMaxima][longitudMaxima];
int arrN[longitudMaxima][longitudMaxima];
do
{
cout << " Ingrese el numero de filas y columnas: ";
cin >> fila;
if (fila<1)
{
cout << " El valor no puede ser negativo " << longitudMaxima << endl;
}

if (fila > longitudMaxima)


{
cout << " El valor debe ser menor o igual a " << longitudMaxima << endl;
}
}while (fila<1 || fila>longitudMaxima);

columna=fila;

//Matriz M
cout<<endl;
cout << " Ingrese datos de la matriz M :" << endl;
for(i=0;i<fila;i++)
{
for(j=0;j<columna;j++)
{
cout<<" Ingrese el numero de la fila "<<i+1<<", columna "<<j+1<<": ";
cin>>arrM[i][j];
}
}

//Matriz N
cout<<endl;
cout << " Ingrese datos de la matriz N :" << endl;
for(i=0;i<fila;i++)
{
for(j=0;j<columna;j++)
{
cout<<" Ingrese el numero de la fila "<<i+1<<", columna "<<j+1<<": ";
cin>>arrN[i][j];
}
}

cout<<endl;
cout<<" Matriz M: "<<endl;
for(i=0;i<fila;i++)
{
cout<<" ";
for(j=0;j<columna;j++)
{
cout<<arrM[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;

cout<<" Matriz N: "<<endl;


for(i=0;i<fila;i++)
{
cout<<" ";
for(j=0;j<columna;j++)
{
cout<<arrN[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;

cout<<" Matriz MxN :"<<endl;


for(i=0;i<fila;i++)
{
cout<<" ";
for(j=0;j<columna;j++)
{
cout<<arrM[i][j]*arrN[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;

//Procedimiento para solicitar datos de menu 3.3


void opcion_3_3()
{
int fila,columna,i,j,longitudMaxima,sumaDiagonalP, sumaDiagonalS;
longitudMaxima=10;
sumaDiagonalP=0;
sumaDiagonalS=0;
cout << " 3.1 Matriz - Suma de las diagonales de una matriz cuadrada" <<endl;
int arr[longitudMaxima][longitudMaxima];

do
{
cout << " Ingrese el numero de filas y columnas: ";
cin >> fila;
if (fila<1)
{
cout << " El valor no puede ser negativo " << longitudMaxima << endl;
}

if (fila > longitudMaxima)


{
cout << " El valor debe ser menor o igual a " << longitudMaxima << endl;
}
}while (fila<1 || fila>longitudMaxima);

columna=fila;

//Matriz
cout<<endl;
cout << " Ingrese datos de la matriz" << endl;
for(i=0;i<fila;i++)
{
for(j=0;j<columna;j++)
{
cout<<" Ingrese el numero de la fila "<<i+1<<", columna "<<j+1<<": ";
cin>>arr[i][j];
}
}

cout<<endl;
cout<<" La matriz ingresada es:"<<endl;
for(i=0;i<fila;i++)
{
cout<<" ";
for(j=0;j<columna;j++)
{
cout<<arr[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;

cout<<" Diagonal principal: "<<endl;


for(i=0;i<fila;i++)
{
cout<<" ";
for(j=0;j<columna;j++)
{
if (i==j)
{
cout<<arr[i][j]<<" ";
sumaDiagonalP=sumaDiagonalP+arr[i][j];
}
else
{
cout<<" ";
}
}
cout<<endl;
}

cout<<" Diagonal secundaria"<<endl;


for(i=0;i<fila;i++)
{
cout<<" ";
for(j=0;j<columna;j++)
{
if (i+j==fila-1)
{
cout<<arr[i][j]<<" ";
sumaDiagonalS=sumaDiagonalS+arr[i][j];
}
else
{
cout<<" ";
}
}
cout<<endl;
}

cout << " --------------------------------- " << endl;


cout << " La suma de las diagonales es " << sumaDiagonalP+sumaDiagonalS << endl;
cout << " --------------------------------- " << endl;
}

/***********************************************/
/* MAIN DEL MENU */
/***********************************************/
int main()
{
int opcionMenu, opcionSubMenu;
string continuar;
string nombreMenu[4]={"","Areas","Volumenes","Matrices"};

continuar="S";

do
{
//Mostramos Menu
menu();
//Solicitamos opcion del menu
cout << " Ingrese una opcion del menu (1-3) [#] -> ";
cin >> opcionMenu;

//Evaluamos opcion del menu


if (opcionMenu>0 && opcionMenu<4)
{
//Solicito ingreso de Sub Menu
cout << " Ingrese una opcion del sub menu " <<
nombreMenu[opcionMenu] << " (1-4) [#] -> ";
cin >> opcionSubMenu;

//Evaluamos opcion del sub menu


if (opcionSubMenu>0 && opcionMenu<5)
{
cout << endl;
switch (opcionMenu)
{
case 1: //Menu 1-Areas
opcion_1(opcionSubMenu);
break;
case 2: //Menu 2-Volumenes
opcion_2(opcionSubMenu);
break;
case 3: //Menu 3-Matrices
opcion_3(opcionSubMenu);
break;
default:break;
}
}
else
{
cout << " La opcion del sub menu " << opcionSubMenu << " no
existe" << endl;
}
}
else
{
cout << " La opcion del menu " << opcionMenu << " no existe" << endl;
}

cout << " DESEA CONTINUAR [S/N] ? -> ";


cin >> continuar;

}while (continuar=="S" || continuar=="s");

return 0;

EJECUCION DEL SISTEMA

También podría gustarte