Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 39

Algorítmica I

Tema 2:
Programación Estructurada:
Estructuras de control secuencial y selectiva
Problemas

Profesor
John Ledgard Trujillo Trejo

Ingeniería de Sistemas e Informática


Departamento de Ciencias de la Computación
Curso 2017-II
Problema 1
Pepe salió a celebrar su cumpleaños con un grupo de amigos y decidieron ir a comer a un
restaurante. Ellos acostumbran pagar la cuenta por partes iguales, es decir, cada uno paga lo
mismo. Sin embargo, la cuenta incluye el consumo de todos los comensales, y no considera el IGV
(19 %) ni la propina. Pepe y su grupo de amigos acostumbran dejar un 10 % como propina. El
problema es que no saben cuánto debe pagar cada uno.
Cada algoritmo empieza por el nombre del
ENTRADA: consumo, nump algoritmo: Algoritmo Nombre_Algoritmo
SALIDA: montoporp
Algoritmo Pago_Consumo
INTERMEDIOS : montoigv, propina, montot
cons
igv  0.19
porprop  0.1
var
real: consumo
real: nump
real: montoporp, montoigv, propina, motot
inicio
escribir (“Ingrese el numero de personas: ”)
leer(nump)
escribir (“Ingrese el consumo: ”)
leer (consumo)
montoigv  igv*consumo
propina  porprop*consumo
montot  consumo + montoigv + propina
montoporp  montot/nump
escribir (“El monto total a pagar es: ”, montot)
escribir (“El
Algorítmica I monto
por persona es: “, montoporp)
John Ledgard Trujillo Trejo
09fin
de abril de 2019
Problema 1
Pepe salió a celebrar su cumpleaños con un grupo de amigos y decidieron ir a comer a un
restaurante. Ellos acostumbran pagar la cuenta por partes iguales, es decir, cada uno paga lo
mismo. Sin embargo, la cuenta incluye el consumo de todos los comensales, y no considera el IGV
(19 %) ni la propina. Pepe y su grupo de amigos acostumbran dejar un 10 % como propina. El
problema es que no saben cuánto debe pagar cada uno.

ENTRADA: consumo, nump


SALIDA: montoporp
Algoritmo Pago_Consumo
INTERMEDIOS : montoigv, propina, montot
cons
igv  0.19
Se escribe la palabra reservada cons para definer las porprop  0.1
constants del algoritmo. var
real: consumo
real: nump
real: montoporp, montoigv, propina, motot
inicio
escribir (“Ingrese el numero de personas: ”)
leer(nump)
escribir (“Ingrese el consumo: ”)
leer (consumo)
montoigv  0.19*consumo
propina  01*consumo
montot  consumo + montoigv + propina
montoporp  montot/nump
escribir (“El monto total a pagar es: ”, montot)
escribir (“El
Algorítmica I monto por persona es: “, montoporp)
John Ledgard Trujillo Trejo
09fin
de abril de 2019
Problema 1
Pepe salió a celebrar su cumpleaños con un grupo de amigos y decidieron ir a comer a un
restaurante. Ellos acostumbran pagar la cuenta por partes iguales, es decir, cada uno paga lo
mismo. Sin embargo, la cuenta incluye el consumo de todos los comensales, y no considera el IGV
(19 %) ni la propina. Pepe y su grupo de amigos acostumbran dejar un 10 % como propina. El
problema es que no saben cuánto debe pagar cada uno.

ENTRADA: consumo, nump


SALIDA: montoporp
Algoritmo Pago_Consumo
INTERMEDIOS : montoigv, propina, montot
cons
igv  0.19
porprop  0.1
var
real: consumo
Se escribe la palabra reservada var para definer las real: nump
variables del algoritmo. real: montoporp, montoigv, propina, motot
inicio
escribir (“Ingrese el numero de personas: ”)
leer(nump)
escribir (“Ingrese el consumo: ”)
leer (consumo)
montoigv  0.19*consumo
propina  01*consumo
montot  consumo + montoigv + propina
montoporp  montot/nump
escribir (“El monto total a pagar es: ”, montot)
escribir (“El
Algorítmica I monto por persona es: “, montoporp)
John Ledgard Trujillo Trejo
09fin
de abril de 2019
Problema 1
Pepe salió a celebrar su cumpleaños con un grupo de amigos y decidieron ir a comer a un
restaurante. Ellos acostumbran pagar la cuenta por partes iguales, es decir, cada uno paga lo
mismo. Sin embargo, la cuenta incluye el consumo de todos los comensales, y no considera el IGV
(19 %) ni la propina. Pepe y su grupo de amigos acostumbran dejar un 10 % como propina. El
problema es que no saben cuánto debe pagar cada uno.

ENTRADA: consumo, nump


SALIDA: montoporp
Algoritmo Pago_Consumo
INTERMEDIOS : montoigv, propina, montot
cons
igv  0.19
porprop  0.1
var
Se usa inicio para empezar a escribir las real: consumo
instrucciones del algoritmo.
real: nump
real: montoporp, montoigv, propina, motot
inicio
escribir (“Ingrese el numero de personas: ”)
leer(nump)
escribir (“Ingrese el consumo: ”)
leer (consumo)
montoigv  0.19*consumo
propina  01*consumo
montot  consumo + montoigv + propina
montoporp  montot/nump
escribir (“El monto total a pagar es: ”, montot)
escribir (“El
Algorítmica I monto por persona es: “, montoporp)
John Ledgard Trujillo Trejo
09fin
de abril de 2019
Problema 1
Pepe salió a celebrar su cumpleaños con un grupo de amigos y decidieron ir a comer a un
restaurante. Ellos acostumbran pagar la cuenta por partes iguales, es decir, cada uno paga lo
mismo. Sin embargo, la cuenta incluye el consumo de todos los comensales, y no considera el IGV
(19 %) ni la propina. Pepe y su grupo de amigos acostumbran dejar un 10 % como propina. El
problema es que no saben cuánto debe pagar cada uno.

ENTRADA: consumo, nump


SALIDA: montoporp
Algoritmo Pago_Consumo
INTERMEDIOS : montoigv, propina, montot
cons
igv  0.19
porprop  0.1
var
real: consumo
Se usa escribir() para mostrar en pantalla lo que esta real: nump
en parenthesis, si es una cadena tiene que estar entre
comillas real: montoporp, montoigv, propina, motot
inicio
escribir (“Ingrese el numero de personas: ”)
leer(nump)
escribir (“Ingrese el consumo: ”)
leer (consumo)
montoigv  0.19*consumo
propina  01*consumo
montot  consumo + montoigv + propina
montoporp  montot/nump
escribir (“El monto total a pagar es: ”, montot)
escribir (“El
Algorítmica I monto por persona es: “, montoporp)
John Ledgard Trujillo Trejo
09fin
de abril de 2019
Problema 1
Pepe salió a celebrar su cumpleaños con un grupo de amigos y decidieron ir a comer a un
restaurante. Ellos acostumbran pagar la cuenta por partes iguales, es decir, cada uno paga lo
mismo. Sin embargo, la cuenta incluye el consumo de todos los comensales, y no considera el IGV
(19 %) ni la propina. Pepe y su grupo de amigos acostumbran dejar un 10 % como propina. El
problema es que no saben cuánto debe pagar cada uno.

ENTRADA: consumo, nump


SALIDA: montoporp
Algoritmo Pago_Consumo
INTERMEDIOS : montoigv, propina, montot
cons
igv  0.19
porprop  0.1
var
real: consumo
real: nump
Se usa leer() para ingresar los datos. Los datos real: montoporp, montoigv, propina, motot
ingresados se le asigna a la variable indicada.
inicio
escribir (“Ingrese el numero de personas: ”)
leer(nump)
escribir (“Ingrese el consumo: ”)
leer (consumo)
montoigv  0.19*consumo
propina  01*consumo
montot  consumo + montoigv + propina
montoporp  montot/nump
escribir (“El monto total a pagar es: ”, montot)
escribir (“El
Algorítmica I monto por persona es: “, montoporp)
John Ledgard Trujillo Trejo
09fin
de abril de 2019
Problema 1
Pepe salió a celebrar su cumpleaños con un grupo de amigos y decidieron ir a comer a un
restaurante. Ellos acostumbran pagar la cuenta por partes iguales, es decir, cada uno paga lo
mismo. Sin embargo, la cuenta incluye el consumo de todos los comensales, y no considera el IGV
(19 %) ni la propina. Pepe y su grupo de amigos acostumbran dejar un 10 % como propina. El
problema es que no saben cuánto debe pagar cada uno.

ENTRADA: consumo, nump


SALIDA: montoporp
Algoritmo Pago_Consumo
INTERMEDIOS : montoigv, propina, montot
cons
igv  0.19
porprop  0.1
var
real: consumo
real: nump
real: montoporp, montoigv, propina, motot
inicio
escribir (“Ingrese el numero de personas: ”)
Se usa “” para asignar valores a las variables y leer(nump)
constantes escribir (“Ingrese el consumo: ”)
leer (consumo)
montoigv  0.19*consumo
propina  01*consumo
montot  consumo + montoigv + propina
montoporp  montot/nump
escribir (“El monto total a pagar es: ”, montot)
escribir (“El
Algorítmica I monto por persona es: “, montoporp)
John Ledgard Trujillo Trejo
09fin
de abril de 2019
Problema 1
Pepe salió a celebrar su cumpleaños con un grupo de amigos y decidieron ir a comer a un
restaurante. Ellos acostumbran pagar la cuenta por partes iguales, es decir, cada uno paga lo
mismo. Sin embargo, la cuenta incluye el consumo de todos los comensales, y no considera el IGV
(19 %) ni la propina. Pepe y su grupo de amigos acostumbran dejar un 10 % como propina. El
problema es que no saben cuánto debe pagar cada uno.

ENTRADA: consumo, nump


SALIDA: montoporp
Algoritmo Pago_Consumo
INTERMEDIOS : montoigv, propina, montot
cons
igv  0.19
porprop  0.1
var
real: consumo
real: nump
real: montoporp, montoigv, propina, motot
inicio
escribir (“Ingrese el numero de personas: ”)
leer(nump)
escribir (“Ingrese el consumo: ”)
leer (consumo)
Se usa fin para finalizar el algoritmo.
montoigv  0.19*consumo
propina  01*consumo
montot  consumo + montoigv + propina
montoporp  montot/nump
escribir (“El monto total a pagar es: ”, montot)
escribir (“El
Algorítmica I monto por persona es: “, montoporp)
John Ledgard Trujillo Trejo
09fin
de abril de 2019
Problema 2
Un alumno quiere calcular la nota final que obtuvo en Cálculo. Se sabe que en el curso se tomaron
tres pruebas, la primera de ellas con un valor de 20 % de la nota final, mientras que las otras dos
tienen un valor de 30 % cada una. Además, la nota obtenida en controles y tareas tiene un peso de
20 %. Elabore una solución algorítmica que ayude a este alumno a resolver su problema.

ENTRADA: exa1, exa2, exa3, control Algoritmo Promedio_Final_Calculo


SALIDA: nota_final var
real: exa1, exa2, exa3, control
real: distancia

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

//Inclusion de librerias Escrita entre /* y */ : comentario


varias lineas. Despues de //:
#include <conio.h> comentario de una línea
#include <iostream.h> Mejora la legibilidad del programa..
#include <math.h>
int main()
{
float coe1, coe2, coe3;
float raiz1, raiz2, dis;

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.

{ cin ingresar valores por el teclado. >> operador de flujo de entrada.


cout<<"La ecuacion dada no es de segundo grado";
}
else
{
dis = coe2*coe2-4*coe1*coe3;
cout<<"Discriminante="<<dis<<endl;
if (dis>0)
{
raiz1 = (-coe2+sqrt(dis))/2*coe1;
raiz2 = (-coe2-sqrt(dis))/2*coe1;
cout<<"Las raices de la ecuacion son:" ;
cout<<raiz1<<“ y “<<raiz2<<endl;
}
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019 1.19
Problema 6

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).

DATOS DE ENTRADA: coorx, coory


DATOS DE SALIDA: distancia
Algoritmo ubicación_punto
var
real : coorx, coory, distancia
inicio
escribir ("Ingresar la coordenada x: ")
leer (coorx)
escribir ("Ingresar la coordenada y: "
leer (coory)
si (coorx>0 y coory>0) entonces
escribir ("El punto (", coorx, ", " coory, “) pertenece al I cuadrante")
si (coorx<0 y coory>0) entonces
escribir ("El punto ", coorx, ", ", coory, ") pertenece al II cuadrante”)
Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019
Problema 7

si (coorx<0 y coory<0) entonces


escribir ("El punto (", coorx, ", ", coory, ") pertenece al III cuadrante”)
si (coorx>0 y coory<0) entonces
escribir ("El punto (", coorx, ", ", coory, ") pertenece al IV cuadrante")
si (coorx>0 y coory=0) entonces
escribir ("El punto (", coorx, ", ", coory, ") esta en la abcisa X (positiva)")
si (coorx<0 y coory=0) entonces
escribir ("El punto (", coorx, ", ", coory, ") esta en la abcisa X (negativa)")
si (coorx=0 y coory>0) entonces
escribir ("El punto (", coorx, ", ", coory, ") esta en la ordenada Y (positiva)")
si (coorx=0 y coory<0) entonces
escribir ("El punto (", coorx, ", ", coory, ") esta en la ordenada Y (negativa)")
// Calculo de la distancia del punto al origen
distancia  sqrt(coorx*coorx + coory*coory)
escribir ("La distancia desde el origen (0, 0) al punto ingresado es: ", distancia)
fin

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

if (coorx>0 && coory==0)


cout << "El punto ("<<coorx<<", "<<coory<<") esta en la abcisa X (positiva)\n";
if (coorx<0 && coory==0)
cout << "El punto ("<<coorx<<", "<<coory<<") esta en la abcisa X (negativa)\n";
if (coorx==0 && coory>0)
cout << "El punto ("<<coorx<<", "<<coory<<") esta en la ordenada Y (positiva)\n";
if (coorx==0 && coory<0)
cout << "El punto ("<<coorx<<", "<<coory<<") esta en la ordenada Y (negativa)\n";

// Calculo de la distancia del punto al origen


distancia = sqrt(pow(coorx,2) + pow(coory, 2));
cout << "La distancia desde el origen (0, 0) al punto ingresado es: "<<distancia;
getch();
}

Algorítmica I
John Ledgard Trujillo Trejo
09 de abril de 2019
Problema 8

Con objeto de fomentar el ahorro energético, el recibo de la


electricidad se elabora de forma que el precio de cada Kwh
(kilowatio/hora) consumido es más caro cuanto más se consume:
• 100 Ptas de gastos fijos.
• 50 Ptas/Kwh para los primeros 100 Kwh.
• 70 Ptas/Kwh para los siguientes 150 Kwh (de 101 a 250).
• 100 Ptas/Kwh para el resto.
Elabore un algoritmo y programa que lea de teclado los dos últimos
valores del contador (lo que marca el contador actualmente y lo que
marcaba en la última lectura), y calcule e imprima en pantalla el
importe total a pagar.

DATOS DE ENTRADA : C1, C2


DATOS DE SALIDA: recibo

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

Calcular la cuenta de un cliente para un pedido de cierta cantidad de


unidades de un producto. Suponemos que solo se dispone de cuatro
productos. Entre ellos:
Número de producto Precio Unitario
100 24.50
247 105.00
16 10.35
240 16.00
Se puede hacer un descuento en un pedido grande: si la cuenta total es
de s/.1000.00 o más, se hace un descuento del 2%; de s/.800.00 a
s/.999.99 obtiene un descuento del 1%.

DATOS DE ENTRADA: Código del producto (CP), Cantidad (Cant).


DATOS DE SALIDA: Costo tota (CT), descuento (Desc), Monto neto (MonN)

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

En una tienda de descuento se efectúa una promoción, se entregan 5


tarjetas de promoción a los clientes que se pueden utilizar para 5
oportunidades de compra, al azar diferentes colores, en cada
oportunidad comprando con una tarjeta se hace un descuento sobre el
valor de la compra por total según el color de tarjeta que el cliente
saque al pagar en caja. Si la tarjeta es de color blanco no se le hará
descuento alguno, si es verde se le hará un 10% de descuento, si es
amarilla un 25%, si es azul un 50% y si es roja un 100%. Determinar la
cantidad final que el cliente deberá pagar por su compra en cada
oportunidad que uso una tarjeta, y la cantidad de ahorro que realizó al
utilizar las 5 tarjetas. Se sabe que solo hay tarjetas de los colores
mencionados.

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

Leer tres números diferentes e imprimir el numero mayor de los tres.

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

 Fundamentos de programación, Algoritmos y Estructura de datos


y Objetos, Joyanes, Luis, Editorial McGraw Hill, 2003.

 Metodología de la programación estructurada, Joyanes, Luis,


Editorial McGraw Hill, 1993.

 El lenguaje de programación C, Kernighan y Ritchie, Editorial


Prentice Hall, 1991.

 Como programar en C/C++ , H.M. Deitel and P.J. Deitel, Ed.


Prentice Hall, 1998, 6ta. edición

1.37
¿ Preguntas ?

1.38

También podría gustarte