2da. Sesión Practica Algoritmica I 2019 - I
2da. Sesión Practica Algoritmica I 2019 - I
Tema 2:
Programación Estructurada:
Estructuras de control secuencial y selectiva
Problemas
Profesor
John Ledgard Trujillo Trejo
inicio
escribir (“Ingrese primer examen: ”)
leer(exa1)
escribir (“Ingrese segundo examen: ”)
leer(exa2)
escribir (“Ingrese tercer examen: ”)
leer(exa3)
escribir (“Ingrese nota controles y tareas: ”)
leer (control)
nta_final 0.2*exa1+0.3*exa2+0.3*exa3+0.2*control
escribir (“La nota final es: ”, nota_final)
fin
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019
Problema 3
El ejército está experimentando con un nuevo tipo de proyectil para determinar el alcance que
consigue. Para esto, lleva a cabo pruebas en el desierto y registra en un mapa cartesiano las
coordenadas desde donde lanza el proyectil y donde cae a tierra. Estas coordenadas están dadas
como pares ordenados de números enteros positivos que representan metros. Ayude al ejército a
contar con un algoritmo que le permita determinar la distancia recorrida por el proyectil en un
lanzamiento.
Algoritmo distancia_proyectil
ENTRADA: coox1, cooy1, coox2, cooy2 var
SALIDA: distancia real: coox1, cooy1, coox2, cooy2
real: distancia
inicio
escribir (“Ingrese X de coordenada 1: ”)
leer(coox1)
escribir (“Ingrese Y de coordenada 1: ”)
leer(cooy1)
escribir (“Ingrese X de coordenada 2: ”)
leer(coox2)
escribir (“Ingrese Y de coordenada 2: ”)
leer(cooy2)
distancia ((coox1-coox2)^2+(cooy1-cooy2)^2)^0.5
escribir (“La distancia recorrida es: ”, distancia)
fin
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019
Problema 4
Una empresa constructora vende terrenos con la forma A de la figura. Realice un algoritmo para
obtener el área respectiva de un terreno de medidas de cualquier valor.
Algoritmo área_terreno
real: A, B, C
real: area
inicio
escribir (“Ingrese valor de A: ”)
leer(A)
escribir (“Ingrese valor de B: ”)
ENTRADA: A, B, C leer(B)
SALIDA: area escribir (“Ingrese valor de C: ”)
leer(C)
area (A-C)*B/2 + C*B
escribir (“El área del terreno es: ”, area)
fin
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019
Problema 5
Todas las semanas se estudia la posible variación en el precio de la bencina. Para ello, se utiliza un polinomio de
tercer grado, de la forma:
en donde x es un factor que determina semanalmente el Ministerio de Economía. Cuando el valor del polinomio es
mayor que 10, esa semana la bencina sube, en un factor igual al valor obtenido. Cuando el valor del polinomio es
menor que −10, el valor de la bencina baja en un factor igual al valor absoluto del valor obtenido para el polinomio.
Cuando el valor se encuentra en el intervalo [−10; 10], el precio no cambia en esa semana. Nos interesa contar con
un algoritmo que evalué el precio de la bencina para una semana particular, e indique no sólo si sube, baja, o se
queda igual, sino también en cuánto sube. Por ejemplo, si el valor del polinomio resultara ser -15, entonces el precio
de la bencina para la semana siguiente bajaría en un 15
Algoritmo precio_bencina
real: x
real: p
inicio
ENTRADA: x
escribir (“Ingrese valor de x: ”)
SALIDA:
INTERMEDIOS : p leer(x)
p x^3-2*x^2+3*x-5
si (p<-10) entonces
escribir (“El valor de la bencina baja: ”, -p)
sino
si ((p>=-10) y (p<=10)) entonces
escribir (“El valor de la bencina se mantiene”)
sino
escribir (“El valor de la bencina sube: ”, p)
fin_si
Algorítmica I
fin_si
John Ledgard Trujillo Trejo
09 de abril de 2019
Problema 6
Algoritmo Ecuacion_segundo_grado
var
Calcular las posibles raíces para real: coe1, coe2, coe3
una ecuación de segundo grado: real : raiz1, raiz2, dis
ax2+bx+c=0 inicio
escribir (“Ingrese los coeficientes :”,)
leer (coe1, coe2, coe3)
si (coe1 = 0) entonces
escribir (“La ecuación dada no es de 2do. Grado”)
sino
dis coe2*coe2 – 4*coe1*coe3
ENTRADA: coe1, coe2, coe3 si (dis > 0) entonces
SALIDA: raiz1, raiz2 raiz1 (-coe2 – raiz(disc))/2*coe1
INTERMEDIOS : disc raiz2 (-coe2 + raiz(disc))/2*coe1
escribir (“Las raices de la ecuación son: “, raiz1, raiz2)
sino si (dis = 0) entonces
raiz1 -coe2/2*coe1
raiz2 raiz1
escribir (“Las raices de la ecuación son:”, raiz1, raiz2)
sino escribir (“No existen raíces reales”)
fin_si
fin_si
fin_si
fin
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019
Problema 6
/***********************************************************
Universidad Nacional Mayor de San Marcos
Facultad de Ingenieria de Sistemas e Informatica
Laboratorio de Algoritmica I
***********************************************************
Nombre de archivo : C:\ecuasg.CPP
Fecha de Creación : 9/05/01
Hora de Creación : 12:03:24 PM
Descripción : Solucion a la ecuacion de segundo grado
Autor : Ing. John Ledgard Trujillo Trejo
Copyright : Unmsm - 2001
*/ Comentarios
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019 1.14
Problema 6
/***********************************************************
Universidad Nacional Mayor de San Marcos
Facultad de Ingenieria de Sistemas e Informatica
Laboratorio de Algoritmica I
***********************************************************
Nombre de archivo : C:\ecuasg.CPP
Fecha de Creación : 9/05/01
Hora de Creación : 12:03:24 PM
Descripción : Solucion a la ecuacion de segundo grado
Autor : Ing. John Ledgard Trujillo Trejo
Copyright : Unmsm - 2001
*/ Directiva de preprocesador
//Inclusion de librerias Mensage para el preprocesador del compilador C++.
#include <conio.h> Se empieza a escribir con #.
#include <iostream.h> #include <iostream.h> incluye operaciones de
#include <math.h> input/output (como escribir en la pantalla).
int main()
{
float coe1, coe2, coe3;
float raiz1, raiz2, dis;
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019 1.15
Problema 6
/***********************************************************
Universidad Nacional Mayor de San Marcos
Facultad de Ingenieria de Sistemas e Informatica
Laboratorio de Algoritmica I
***********************************************************
Nombre de archivo : C:\ecuasg.CPP
Fecha de Creación : 9/05/01
Hora de Creación : 12:03:24 PM
Descripción : Solucion a la ecuacion de segundo grado
Autor : Ing. John Ledgard Trujillo Trejo
Copyright : Unmsm - 2001
*/
//Inclusion de librerias
#include <conio.h> Programas en C++ contienen una o más funciones, uno de ellos es
el principal: main
#include <iostream.h>
Son usados parentesis para indicar una función
#include <math.h> int indica que main "retorna" un valor entero.
int main()
{
float coe1, coe2, coe3;
float raiz1, raiz2, dis;
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019 1.16
Problema 6
/***********************************************************
Universidad Nacional Mayor de San Marcos
Facultad de Ingenieria de Sistemas e Informatica
Laboratorio de Algoritmica I
***********************************************************
Nombre de archivo : C:\ecuasg.CPP
Fecha de Creación : 9/05/01
Hora de Creación : 12:03:24 PM
Descripción : Solucion a la ecuacion de segundo grado
Autor : Ing. John Ledgard Trujillo Trejo
Copyright : Unmsm - 2001
*/
//Inclusion de librerias
#include <conio.h>
#include <iostream.h>
#include <math.h>
int main()
{
Una llave abierta { empieza el cuerpo de la función y una
float coe1, coe2, coe3; llave cerrada } el final.
float raiz1, raiz2, dis;
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019 1.17
Problema 6
/***********************************************************
Universidad Nacional Mayor de San Marcos
Facultad de Ingenieria de Sistemas e Informatica
Laboratorio de Algoritmica I
***********************************************************
Nombre de archivo : C:\ecuasg.CPP
Fecha de Creación : 9/05/01
Hora de Creación : 12:03:24 PM
Descripción : Solucion a la ecuacion de segundo grado
Autor : Ing. John Ledgard Trujillo Trejo
Copyright : Unmsm - 2001
*/
//Inclusion de librerias
#include <conio.h>
#include <iostream.h>
#include <math.h>
int main()
{
Declaración de variables.
float coe1, coe2, coe3;
float raiz1, raiz2, dis;
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019 1.18
Problema 6
clrscr();
cout<<"Ingrese el valor de los coeficientes: ";
cin>>coe1;
cin>>coe2;
cout imprime un string de caracteres contenidos entre “ y ”.
cin>>coe3; Imprime el valor de una variable y constante. << operador de flujo de
if (coe1==0) salida.
else
if (dis==0)
{
raiz1=-coe2/2*coe1;
raiz2=raiz1;
cout<<"Las raices de la ecuacion son:";
cout<<raiz1<<“ y “<<raiz2<<endl;
}
else
{
cout<<"No existe solucion en los reales";
};
};
getch();
}
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019
Problema 7
Hacer un algoritmo que pida ingresar las coordenadas de un punto (x, y) e ubique
su posición en el plano cartesiano y su distancia al origen (0, 0).
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019
Problema 7
#include <iostream.h>
#include <conio.h>
#include <math.h>
void main() // Programa Principal
{
float coorx, coory, distancia; //coordenadas x e y.
cout << "Ingresar la coordenada x: ";cin>>coorx; //pide coordenada x
cout << "Ingresar la coordenada y: ";cin>>coory; //pide coordenada y
clrscr();
if (coorx>0 && coory>0)
cout << "El punto ("<<coorx<<", "<<coory<<") pertenece al I cuadrante\n";
if (coorx<0 && coory>0)
cout << "El punto ("<<coorx<<", "<<coory<<") pertenece al II cuadrante\n";
if (coorx<0 && coory<0)
cout << "El punto ("<<coorx<<", "<<coory<<") pertenece al III cuadrante\n";
if (coorx>0 && coory<0)
cout << "El punto ("<<coorx<<", "<<coory<<") pertenece al IV cuadrante\n";
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019
Problema 7
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019
Problema 8
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019 1.25
Problema 8
Algoritmo recibo_de_consumo
real: C1, C2, recibo
inicio
escribir ("Escribe el valor del contador anterior al último: ")
leer (C1)
escribir ("Escribe el último valor del contador: ")
leer (C2)
si (C1 > C2) entonces
escribir ("ERROR: El último valor es menor que el anterior.")
sino
C1 C2 - C1
si (C1 <= 100) entonces
recibo 100 + 50*C1;
sino si (C1<=250) entonces
recibo 5100 + 70*(C1 - 100)
sino
recibo 5100 + 70*150 + 100*(C1 - 250)
fin_si
escribir ("El valor del recibo es: ", recibo)
fin_si
fin_si
fin Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019 1.26
Problema 8
#include <stdio.h>
#include <conio.h>
void main() {
float C1,C2, recibo;
printf("Escribe el valor del contador anterior al último: ");
scanf("%f", &C1);
printf("Escribe el último valor del contador: ");
scanf("%f", &C2);
if (C1>C2)
printf("ERROR: El último valor es menor que el anterior.");
else {
C1=C2-C1;
if (C1<=100)
recibo=100 + 50*C1;
else if (C1<=250)
recibo= 5100 + 70*(C1-100);
else
recibo= 5100 + 70*150 + 100*(C1-250);
printf("El valor del recibo es: %f.\n", recibo);
}
getch();
} Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019 1.27
Problema 9
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019 1.28
Problema 9
Algoritmo CUENTA
Var
Entero: CP
Real : PU, Cant, CT, MonN, Des
Const
D1 = 0.02 //Porcentaje de descuento 1
D2 = 0.01 // Porcentaje de descuento 2
Inicio
Leer CP, Cant
Si CP=100 entonces
PU 24.05
Sino
Si CP=247 entonces
PU 105.00
Sino
Si CP=16 entonces
PU 10.35
Sino
PU 16.00
Fin_si
Fin_si
Fin_si Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019
Problema 9
CT PU * Cant
Si CT 1000 entonces
Desc CT *D1
Sino
Si CT 800 entonces
Desc CT*D2
Sino Desc 0
Fin_si
Fin_si
MonN CT – Desc
Escribir(CT, Desc, MonN)
Fin
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019
Problema 9
#include <iostream.h>
#include <constrea.h>
main()
{
int CP;
float PU, Cant, CT, MonN, Desc;
const float D1=0.02, D2 = 0.0;
cout<<"Ingrese el codigo del producto y la cantidad: ";
cin>>CP>>Cant;
if (CP==100) PU=24.05;
else if (CP==247) PU=105.00;
else if (CP==16) PU=10.35;
else PU=16.00;
CT = PU * Cant;
if (CT>=1000) Desc=CT*D1;
else if (CT>=800) Desc = CT*D2;
else Desc=0;
MonN = CT - Desc;
cout<<CT<<endl<<Desc<<endl<<MonN;
getch();
Algorítmica I
} John Ledgard Trujillo Trejo
09 de abril de 2019
Problema 10
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019
Problema 10
Algoritmo Tienda_Descuento
var
real: Compra, CompraPago, CantAhorro, descuento
entero: ColorT, i // 1: blanco, 2: verde, 3:amarilla, 4: azul y 5: roja
inicio
Cant Ahorro ← 0
para ( i = 1 hasta 5) hacer
escribir (“Ingrese el valor de la compra:”)
leer(Compra)
escribir (“Ingrese el Color de la tarjeta:”)
leer(ColorT)
según_sea(ColorT) hacer
‘1´ : CompraPago ← Compra
‘2´ : CompraPago ← Compra - Compra * 0.1
‘3´ : CompraPago ← Compra - Compra * 0.25
‘4´ : CompraPago ← Compra - Compra * 0.5
‘5´ : CompraPago ← 0
fin_segun_sea
descuento ← Compra – CompraPago
CantAhorro ← CantAhorro + descuento
escribir (“El Valor de la Compra oportunidad”, i, “ es:”, CompraPago)
fin_para
escribir (“El valor del ahorro total es:”, CantAhorro)
fin
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019
Problema 11
Algoritmo Número_mayor
Var
Real : num1, num2, num3
Real : mayor
ENTRADA: num1, num2, num3
Inicio
SALIDA: mayor
Leer (num1, num2, num3)
Si (num1 > num2) and (num1 > num3) entonces
mayor num1
si no
Si (num2 > num1) and (num2 > num3) entonces
mayor num2
sino
mayor num3
fin-si
fin-si
Escribir (“El número mayor es :”, mayor)
Fin
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019
Problema 12
Hacer un algoritmo que ingrese una fecha y determine que sea correcta. Una fecha se
compone de un día, un mes y un año. Los meses enero, marzo, mayo, julio, agosto, octubre y
diciembre tienen 31 días; los meses abril, junio, setiembre y noviembre tienen 30 días; el
mes de febrero tiene 28 días y 29 si el año es bisiesto.
Algoritmo validación_fecha
var
entero dia, mes, anno
entero: validar
inicio
escribir (“Ingrese dia: “)
leer (dia)
escribir (“Ingrese mes: “)
leer (mes)
escribir (“Ingrese anno: “)
leer (anno)
validar ← 0
según_sea (mes) hacer
‘1’,’3’,’5,’7’,’8’,’10’,’12’ :
si ((dia>0) y (dia<32)) hacer
si ( anno>0) hacer
validar ← 1
fin_si
fin_si Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019
Problema 12
‘4’,’6’,’9’,’11’ :
si ((dia>0) y (dia<31)) hacer
si ( anno>0) hacer
validar ← 1
fin_si
fin_si
‘2’ : si ((anno mod 4 = 0) y (anno mod 100<>0) o (anno mod 400 = 0)) entonces
si ((dia >0) y (dia < 30) hacer
validar ← 1
fin_si
sino
si ((dia >0) y (dia < 29) hacer
validar ← 1
fin_si
fin_si
sino
validar ← 0
fin_segun_sea
si (validar = 1) hacer
escribir (“La fecha ingresada es valida”)
sino
escribir (“La fecha ingresada no es valida”)
fin_si Algorítmica I
John Ledgard Trujillo Trejo
fin 09 de abril de 2019
Bibliografía
1.37
¿ Preguntas ?
1.38