Descripción: Cuestionario básico del tema Funciones para C++
EjemplosDescripción completa
Descripción completa
Descripción completa
Descripción completa
Descripción completa
Ejemplos
programacion en cDescripción completa
Full description
Descripción completa
Capitulo introductorio.. Ni en pedo que te subo el libro completo..Descripción completa
Ejercicios basico de programacion en Lenguaje c#Descripción completa
Descripción completa
Descripción completa
Descripción: Inicios en la programación en C, aprenda desde lo mas básico a usar el lenguaje de programación en C.
Descripción completa
Descripción: Inicios a la programación en C
manualDescripción completa
programacion c++
Descripción completa
PROGRAMACIÓN
ALGORITMO Y CODIFICACIÓN
End E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++
Dedico este libro a mis padres (María y Joaquín) a mis queridos hermanos (Jhoselin y Fernando) y a la persona que cambio mi mundo (Yesica Y.C.L)… mi Ys!.
1
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++
INTRODUCCIÓN Hola mi nombre es Edgar y los voy a conducir en la introducción a la programación en el lenguaje C++. C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido. Posteriormente se añadieron facilidades de programación genérica, que se sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma. Desde ya auguro un gran interés en este libro, que será, sin duda alguna, material obligado de consulta y de útil ejercicio.
2
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ INDICE
PROGRAMACION ESTRUCTURADA EN C++ MARCO CONCEPTUAL
-.-.-.-(4)
I. PROCESOS SECUENCIALES -.-.-.-(6) 1.1 Calculando una función. 1.2 Interés Ganado. 1.3 Representar una hora en: Hrs, min, seg. 1.4 Calculando varias funciones. 1.5 Encontrar la distancia y velocidad final de un automóvil. II. PROCESO CONDICIONAL SIMPLE (if) -.-.-.-(12) 2.1 Pago bruto de un obrero si trabaja horas extras. 2.2 Costo de una llamada telefónica. 2.3 Hallando la ecuación 𝑦 = (𝑥 − 3)/(𝑥 2 − 25). 2.4 Rendimiento de un alumno teniendo su promedio. 2.5 Pago de acuerdo al consumo en un encuentro gastronómico. III. PROCESOS CONDICIONAL MULTIPLE (switch) -.-.-.-(19) 3.1 Cuantos días tiene un mes. 3.2 Importe a pagar por la cantidad de diskettes. 3.3 La fecha es correcta? 3.4 Importe a pagar en un instituto. 3.5 Descuento de una U. Privada según la profesión del tutor. IV. PROCESOS REPETITIVOS (while) 4.1 El cociente y residuo por restas sucesivas. 4.2 Divisores comunes de dos números. 1 1 1 4.3 La suma de N primeros 𝑆 = 2 + 4 + 6 + ⋯ 𝑁. 4.4 Lea un número e invierta sus cifras. 4.5 Halle si un número es cubo perfecto.
-.-.-.-(27)
V. PROCESOS REPETITIVOS (do-while) -.-.-.-(34) 5.1 Personas que ingresan a un museo de arte. 5.2 Máxima área que de un terreno. 5.3 Los múltiplos de 4 𝑦 𝑛 > 8, 𝑛 ≤ 32. 5.4 Cálculo del valor de 𝜋. 5.5 El costo menor de la institución que dictan cursos. VI. PROCESOS REPETITIVOS (for) -.-.-.-(41) 6.1 Suma, cuadrados y cubos de los N primeros números. 1 1 1 6.2 Encontrar la suma 𝑆 = + +. . + . 1+𝑥 1+2𝑥 1+𝑛𝑥 6.3 Velocidad promedio de un auto. 6.4 Artículos que podemos comprar con todo nuestro dinero. 6.5 Numero de 3 dígitos que aumenta en 297 al invertirlo. VII. VIII. IX. X.
ARREGLOS Y MATRICES FUNCIONES PROPIAS LIBRERIAS PROPIAS DIAGRAMA DE FLUJO
3
-.-.-.-(47) -.-.-.-(55) -.-.-.-(62) -.-.-.-(68)
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ PROGRACIÓN EN C++ 1
Tiene sus inicios por los años 70 y nace como una necesidad de establecer reglas en la programación. Reglas básicas: 1. Todo programa debe definir y establecer 3 partes: entrada, proceso, salida. 2. Todo proceso es solucionable con las siguientes estructuras de programación: secuencial, condicional, repetitivo. 3. Cualquier estructura de programación solamente debe tener una entrada y una salida. 4. Todo programa puede separarse en partes o módulos (procesos) cada vez más pequeños y fáciles de entender y cada módulo puede acceder a los datos globales del programa. ALGORITMO Es el conjunto ordenado de pasos u operaciones que permiten hallar la solución de un problema. DIAGRAMA DE FLUJO
OPERADORES LÓGICOS
1
http://mySpace91.ucoz.com
4
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ Más operadores ++ Incrementa una unidad -Disminuye una unidad += Incrementa el valor que esté a la derecha del igual -= Disminuye el valor que esté a la derecha del igual *=, /=, %= Multiplica, Divide, Residuo de dividir por el valor que este a la derecha del igual. Para comentarios /*Esto es un comentario en varias líneas*/ //Aquí tu comentario (para solo una línea) Para borrar pantalla clrscr() Salto de línea. cout<, contiene elementos de utlidad relacionados con el uso de la pantalla tales como: clrscr(), gotoxy(), textcolor(), getch(),etc. , contiene elementos de utilidad relacionados con el uso de objetos para la entrada y salida de datos tales como: cin , cout, etc. , contiene funciones y elementos utilizados en expresiones matemáticas tales como la función pow(),sqrt(),etc. , contiene elementos de utilidad relacionados con funciones estándar que vienen desde versiones anteriores del lenguaje de programación C, tales como: printf(), cprintf(), scanf(), etc. , contiene elementos de utilidad relacionados con el manejo de cadenas tales como: strcpy(), strcat(), strlen(), etc. Recordar, que el c++ las tildes no son reconocidas.
5
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++
6
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ PROCESOS SECUENCIALES Se llaman así porque cuando se ejecutan sus órdenes y tareas, estas se realizan en secuencia: una tras otra, no dependiendo de alguna condición que haga variar su secuencia. Una orden o tarea puede ser un ingreso de datos, el cálculo de alguna fórmula, la impresión de algún resultado. Ejm. Inicio Ingresar datos Calcular fórmulas Imprimir resultados Fin Problema CPP01-01 Ingresar el valor de la variable independiente y calcular 𝑓(𝑡) = 𝑡 2 + 4 DATOS D. Entrada: variable independiente (t) D. Salida: variable dependiente (f(t))
DIAGRAMA DE FLUJO
CODIFICACIÓN C++ /*........................ PROGRAMA CPP01.01.CPP Procesos Secuenciales ........................*/ //Inclusion de librerias #include //Para cin, cout #include //Para clrscr(), getch() //funcion principal void main() { //Declaracion de variables float t,ft; //Ingreso de datos clrscr(); cout<<"Ingresar la variable independiente t:";cin>>t; //Calcular Funcion ft=t*t+4; //Escribir Resultado cout<<"El valor ft es= "<
7
INICIO t
E
ft=t^2+4 ft
S
FIN
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ Problema CPP01-02 Calcular el interés generado por un capital depositado durante cierta cantidad de periodos a una tasa de interés determinada y expresada en porcentaje. Aplicar las siguientes fórmulas. 𝑀𝑜𝑛𝑡𝑜 = 𝑐𝑎𝑝𝑖𝑡𝑎𝑙 ∗ (1 +
𝑡𝑎𝑠𝑎 𝑛ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑃𝑒𝑟𝑖𝑜𝑑𝑜𝑠 ) 100
𝐼𝑛𝑡𝑒𝑟é𝑠 = 𝑀𝑜𝑛𝑡𝑜 − 𝐶𝑎𝑝𝑖𝑡𝑎𝑙
(*) (**)
donde, Tasa es el porcentaje de intereses por periodo. Un periodo puede ser un día, un mes, un año, etc. DATOS D. Entrada: Capital, Tasa de Interés (Tasa), Número de periodos (NumPer) D. Salida: Interés ganado (Interes)
CODIFICACIÓN C++ /*........................ PROGRAMA CPP01.02.CPP Procesos Secuenciales ........................*/ //Inclusion de librerias #include //Para cin, cout #include //Para clrscr(), getch() #include //Para pow() //funcion principal void main() { //Declaracion de variables float Capital,Tasa,Monto,Interes; int NumPer; //Ingresar datos clrscr(); cout<<"\nIngresar Capital: ";cin>>Capital; cout<<"% de Tasa Interes: ";cin>>Tasa; cout<<"Numero de periodos: ";cin>>NumPer; //Calcular Monto de acuerdo a la formula Monto=Capital*pow((1+Tasa/100),NumPer); //Calcular valor de los intereses Interes=Monto-Capital; //Escribir resultado cout<
DIAGRAMA DE FLUJO
INICIO Capital, tasa,NumPer
* ** Interes FIN
8
E
E. EMMANUEL COAQUIRA M.
S
Algoritmos y su codificación en C++ Problema CPP01-03 Convertir un número real, que representa horas, a su equivalente en horas, minutos y segundos. DATOS D. Entrada: Un número real (NumReal) D. Salida: Horas (Hor), Minutos (Min), Segundos (Seg)
CODIFICACIÓN C++ /*........................ PROGRAMA CPP01.03.CPP Procesos Secuenciales ........................*/ //Inclusion de librerias #include //Para cin, cout #include //Para clrscr(), getch() //funcion principal void main() { //Declaracion de variables float NumReal; int Hor,Min,Seg; //Ingreso de datos clrscr(); cout<<"Ingrese un numero real: ";cin>>NumReal; //Conversion a unidades pedidas Hor=int(NumReal); NumReal=(NumReal-Hor)*60; Min=int(NumReal); Seg=(NumReal-Min)*60; //Escribir resultados cout<
DIAGRAMA DE FLUJO
INICIO NumReal
E
Hor=int(NumReal) NumReal=(NumReal-Hor)*60
Min=int(NumReal) Seg=(NumReal-Min)*60
Hor, Min, Seg
S
FIN Problema CPP01-04 Supongamos que X,Y,Z son las siguientes funciones: 𝑥 = 𝑡 4 − 8𝑡 + 4, 𝑦 = 𝑠𝑒𝑛(𝑡) + cos(2𝑡), 𝑧 = 𝑒 3𝑡+5 Escribir un programa que lea “t” e imprima x,y,z. DATOS D. Entrada: t D. Salida: x,y,z
9
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ CODIFICACIÓN C++ /*........................ PROGRAMA CPP01.04.CPP Procesos Secuenciales ........................*/ //Inclusion de librerias #include //Para cin,cout #include //Para clrscr(), getch() #include //Para pow() //funcion principal void main() { //Declaracion de variables float t,x; double z,y; //Ingreso de datos clrscr(); //El "\n"para salto de linea cout<<"\nIngresar t: ";cin>>t; //Calcular funciones x=pow(t,3)-8*t+4; y=sin(t)+cos(2*t); z=pow(2.7183,3*t+5); //Escribir Resultados cout<<"\nEl valor de Z: "<
DIAGRAMA DE FLUJO
INICIO t
E
x=t^4-8t+4
y=sen(t)+cos(2t)
z=e^(3t+5)
x,y,z
S
FIN
Problema CPP01-05 Supongamos que un automóvil parte del reposo y tiene una aceleración constante “a”, por “t” segundos. La velocidad final “v” y la distancia “d”, recorrida por el automóvil, son dados por las formulas: 1 𝑑 = 2 𝑎𝑡 2 𝑣 = 𝑎𝑡 DATOS D. Entrada: tiempo (t), CODIFICACIÓN C++ aceleración (a) /*........................ D. Salida: distancia (d), PROGRAMA CPP01.05.CPP velocidad (v)
INICIO t,a
DIAGRAMA DE FLUJO
E
d=(½)at^2 v=at d,v FIN
10
S
Procesos Secuenciales ........................*/ //Inclusion de librerias #include //Para cin, cout #include //Para clrscr(), getch() #include //Para pow() //funcion principal void main() { float t,a,d,v; clrscr(); cout<<"\nIngresamos t= ";cin>>t; cout<<"Ingresamos a= ";cin>>a; d=(1/2)*a*pow(t,2); v=a*t; cout<<"\nla distancia es:\nd= "<
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ PROBLEMAS PROPUESTOS 1. Determinar el valor de la HIPOTENUSA de un triángulo rectángulo aplicando el teorema de Pitágoras, el perímetro y el área que representa conociendo solamente el valor de sus catetos. 2. De acuerdo a un principio aritmético, un número es múltiplo de 5 si termina en 0 o en 5. Aplicando este principio determinar si un número entero es múltiplo de 5. 3. Muestre el algoritmo lea 2 valores a,b; y los intercambie. Por ejemplo si a=2 y b=5 el algoritmo debe hacer que a=5 y b=2. 4. Determinar la suma de los N primeros números enteros de acuerdo a la siguiente formula: 𝑁 ∗ (𝑁 + 1) 𝑆𝑢𝑚𝑎 = 2 5. Calcule el volumen de un cilindro recto conociendo su radio y su altura. 6. Calcule la media aritmética de los n primeros números enteros positivos. 7. Calcule la distancia entre 2 puntos de coordenadas conocidas. 8. Calcule la longitud de una circunferencia de radio conocido. 9. Cuál es el área total de un paralelepípedo. 10. En una reunión asistieron n personas, ¿Cuántos apretones de mano hubieron?
11
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++
12
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ PROCESOS CONDICIÓN SIMPLE (if-else) Se llaman así porque para ejecutar ciertas órdenes y tareas dependen de una condición cuyo resultado puede ser verdadero o puede ser falso. Toda condición implica una comparación. Ejm. Inicio Ingresar nota SI(nota>10) Imprimir “APROBADO” SINO Imprimir “DESAPROBADO” FIN del SI Fin
a)
b)
CONDICIÓN
CONDICIÓN
ACCIONES
ACCIÓN V
ACCIÓN F
La condición, puede ser cualquiera de los siguientes elementos: variable, expresión, Función; sin embargo, el valor que representa solamente podrá ser verdadero o falso. En C++ el calor 0 significa Falso y un valor diferente de 0 significa Verdadero. Acción V, Acción F: conjunto de sentencias. Si el número es sentencias es mayor que uno, se encierra en llaves. C++
if (CONDICIÓN) { ACCIONES; }
a)
13
b)
if (CONDICIÓN) { ACCIÓN V; } else { ACCIÓN F }
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ Problema CPP02-01 Ingresar el código de un trabajador, el número de horas que trabaja a la semana; y la tasa o pago por hora de trabajo. Si el obrero trabaja más de 40 horas por cada hora extra se le pagará hora y media. Escribir como salida la identidad, la taza por hora y el pago bruto. DATOS D. Entrada: código (id), tasa por hora (tasa), número de hora a la semana (numh). D. Salida: id, tasa, pago bruto (pagof) CODIFICACIÓN C++ /*........................... PROGRAMA CPP02.01.CPP Procesos Condición Simple ...........................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int id,numh; float tasa, pagof; //Ingreso de datos clrscr(); cout<<"\nidentifiquese, ingrese su id= ";cin>>id; cout<<"Ingrese la tasa por hora= "; cin>>tasa; cout<<"Numero de horas trabajadas= ";cin>>numh; //Calculando el pago final if(numh<=40) pagof=tasa*numh; else pagof=tasa*40+(numh-40)*1.5*tasa; //Imprimir resultados cout<<"\nSu identidad= "<
DIAGRAMA DE FLUJO
INICIO durac 0
E 1
durac<=3 cos=0.5+0.1* (durac-3)
cos=0.5
cos
S
FIN
Problema CPP02-03 Conociendo x, encuentre el valor numérico de la siguiente expresión. 𝑥−3 𝑦= 2 𝑥 − 25 DATOS CODIFICACIÓN C++ D. Entrada: x D. Salida: y /*........................... DIAGRAMA DE FLUJO
INICIO x 0
x==5v x==-5
E 1
Y=(x-3)/(x^2-25) Funcion discontinua
S
Y
FIN
15
S
PROGRAMA CPP02.03.CPP Procesos Condición Simple ...........................*/ #include #include //funcion principal void main() { //declaraciom de varibles float x,y; //ingreso de datos clrscr(); cout<<"\nIngrese x= ";cin>>x; //impimiemdo costo de la llamada if(x==5||x==-5) cout<<"\n\tLa funcion es discontinua en ese punto"; else { y=(x-3)/(x*x-25); cout<<"\nLa funcion vale: "<
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ Problema CPP02-04 El rendimiento de un alumno se califica según lo siguiente: Bueno si su promedio está entre 16 y 20. Regular si su promedio está entre 11 y 15. Deficiente si su promedio está entre 6 y 10. Pésimo si su promedio está entre 0 y 5. Escriba un algoritmo que lea el promedio de un alumno y diga cuál es su rendimiento. DATOS D. Entrada: promedio (prom) D. Salida: Rendimiento (bueno, regular, deficiente, pésimo) CODIFICACIÓN C++ /*........................... PROGRAMA CPP02.04.CPP Procesos Condición Simple ...........................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int prom; //Ingreso de datos clrscr(); cout<<"\nIngrese su promedio= ";cin>>prom; //Escribiendo el rendimiento del alumno if(prom<0||prom>20) cout<<"\n\tDatos erroneos"; else { if(prom<=5) cout<<"\nRendimiento PESIMO"; else if(prom<=10) cout<<"\nRendimiento DEFICIENTE"; else if(prom<=15) cout<<"\nRendimiento REGULAR"; else cout<<"\nRendimiento BUENO"; } //Pausa para los resultados getch(); }
DIAGRAMA DE FLUJO
INICIO E
prom 0 0 prom<=5 0
Datos Erróneos
1 prom<=10 PESIMO S
1
0
1
prom<0v Prom>20 1
S
prom<=15 DEFICIENTE
BUENO
S
REGULAR
S
S
FIN
Problema CPP02-05 Si el ingreso del encuentro gastronómico es de 3 soles y de acuerdo al consumo correspondiente un descuento respecto a la tabla 1. Determinar, el pago final del comensal, el descuento es al consumo.
16
E. EMMANUEL COAQUIRA M.
S
Algoritmos y su codificación en C++ Tabla 1:
DATOS D. Entrada: Consumo (Cons) D. Salida: Pago final a pagar (Pago) CODIFICACIÓN C++
DIAGRAMA DE FLUJO
INICIO E
cns 0
1 cns>=200
0
1 cns>=100
0
dsc=cns*0.15
1 cns<=50 dsc=cons*0.1 S
dsc=cns*0.01
S
dsc=cns*0.05
S
S
FIN
S
/*........................... PROGRAMA CPP02.05.CPP Procesos Condición Simple ...........................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables float cons,desc,pago; //Ingreso de datos clrscr(); cout<<"\nIngrese el consumo= ";cin>>cons; //Calcular el pago final if(cons>=200) desc=cons*0.15; else { if(cons>=100) desc=cons*0.1; else if(cons>=50) desc=cons*0.05; else desc=cons*0.01; } pago=3+cons-desc; //Escribiendo los resultados cout<<"Lo que tiene que pagar: "<
SUGERENCIA Para el ejercicio 4 también se le podría poner de esta manera: //Escribir el rendimiento del alumno if(prom<0||prom>20) cout<<"\n\tDatos erroneos"; else if(prom<=5) cout<<"\nRendimiento PESIMO"; else if(prom<=10) cout<<"\nRendimiento DEFICIENTE"; else if(prom<=15) cout<<"\nRendimiento REGULAR"; else cout<<"\nRendimiento BUENO"; //Pausa para los resultados getch(); }
17
Así se podría ahorrar un poco de espacio, y estructurar un poco mejor la codificación.
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ PROBLEMAS PROPUESTOS 1. Encuentre el mayor de 3 números ingresados por el teclado. 2. Determinar las raíces de una ecuación de segundo grado. Tener en cuenta que las raíces pueden ser imaginarias. 3. Diga si un número es par o impar. 4. Si dos números son positivos calcule su producto, en caso contrario calcule la suma. 5. Muestre un algoritmo que nos permita evaluar la función: 𝑥2 + 1 , 𝑠𝑖 𝑥 ≤ 0 𝑓(𝑥) {𝑥 2 + 3𝑥 + 2 , 𝑠𝑖 0 < 𝑥 < 3 𝑥+1 , 𝑠𝑖 𝑥 ≥ 3 6. Un profesor desea implementar un algoritmo que le permita bonificar equitativamente a todos sus alumnos de acuerdo a la nota conseguida en un examen, de la siguiente forma: NOTA BONIFICACION < 5 3 < 10 2 >=10 pero < 15 1 >=15 pero <= 20 se le descuenta El residuo de la nota/5 Determinar la nota bonificada para cualquier alumno. 7. Dos personas desean intercambiar sus identidades (Nombre, dirección, teléfono, edad) siempre y cuando la edad del primero fuese mayor que la edad del segundo en no más de 4 años. Ingresar los datos de cada persona y mostrar sus nuevas identidades o un mensaje mostrando la diferencia de edades que impidiera el intercambio de identidades. 8. Un trabajador del estado percibe un sueldo básico mensual de 450 nuevos soles; además recibe incrementos de sueldo de acuerdo a los siguientes conceptos:
También, por Ley está sujeto a un descuento de 10% si su sueldo excedo de S/. 700. Determinar el sueldo neto que recibe un trabajador. 9. El gobierno ha implementado como parte de su programa social, un subsidio familiar bajo la siguiente reglamentación: a. Las familias que tienen hasta 2 hijos reciben S/.70.00, las que tienen entre 3 y 5 hijos reciben S/. 90.00 y las tienen 6 hijos o más reciben S/. 120.00 mensual. b. Por cada hijo en edad escolar reciben S/. 10.00 adicionales. Se considera la edad escolar entre 6 y 18 años. c. Si la madre de familia fuera viuda, la familia recibe S/. 20.00 adicionales. Determinar el monto mensual que recibirá una familia de acuerdo a su propia realidad familiar. 10. Ordene 3 números a, b y c de tal manera que al final a, siempre sea el mayor, b sea el intermedio y c el menor.
18
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++
19
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ PROCESOS CONDICIÓN MULTIPLE (switch) Se llama así porque la ejecución de sus órdenes y tareas dependen de la selección que se haga entre varias alternativas o casos. Ejm. Inicio Ingresar talla SELECCIONA (talla) de caso ‘S’: imprimir “talla caso ‘M’: imprimir “talla caso ‘L’: imprimir “talla caso ‘X’: imprimir “talla Fin de Selección Fin
Small” Medio” Large” Extra Large”
Selector 1
Accion 1
2
Accion 2
...
n
Accion n
default
Accion x
C++ Switch (selector) { Case alternativa 1: Acción 1: break; Case alternativa 2: Acción 2: break; Case alternativa 3: Acción 3: break; . . . Case alternativa n: Acción n: break; Default: Acción X; } El selector puede ser variable, expresión, función; sin embargo, el valor que representa debe ser escalar. Es decir: numérico entero, o carácter individual. De ninguna manera puede ser una cadena ni un float. Este selector será evaluado en cada alternativa hasta que encuentre su lugar, si encuentra una alternativa, ejecuta la acción correspondiente y termina la estructura. Cada alternativa está conformada por un único valor. Cada acción, al igual que en la estructura del tema anterior, puede estar conformada por una o varias sentencias (bloque se sentencias).El uso del default es opcional, sin embargo sirve para ejecutar algo (Acción X) cuando el selector no encuentra su lugar. “Encontrado un CASE el Break, es el que da como terminado el SWITCH”.
20
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ Problema CPP03-01 Lea un mes y un año y determine cuántos días tiene ese mes. Datos D. Entrada: mes y año. D. Salida: días
DIAGRAMA DE FLUJO
Tener en cuenta si un año es bisiesto.
INICIO
CODIFICACIÓN C++ /*............................ PROGRAMA CPP03.01.CPP Procesos Condicion multiple .............................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int m,a,dias; //Ingreso de datos clrscr(); cout<<"\nIngrese el mes= ";cin>>m; cout<<"\nIngrese el anio= ";cin>>a; //Determinar estacion switch(m) { case 1: case 3:case 5:case 7:case 8:case 10: case 12: dias=31;break; case 4:case 6:case 9:case 11: dias=30;break; case 2: if(!(a%4)&&(a%100)||(a%400)) dias=29; else dias=28; break; default: cout<<"Mes incorrecto"; } //Escribiendo los resultados cout<<"\nEl mes "<
Problema CPP03-02
E
m,a
m
1,3,5,7,8,10,12
4,6,9,11
dias=31 dias=30
2
0
aMOD4==0 AND aMOd100!=0 OR aMOD400==0
dias=28
Default
1
dias=29
Mes incorrecto
dias
s
FIN
En una tienda de accesorios para computadores, el precio de venta unitario de los diskettes es el mismo para cualquier marca, sin embargo el descuento varía de acuerdo a la marca y se establece en la siguiente tabla. Determinar el importe a pagar por la cantidad de diskettes comprados de una sola marca, considerando que no se paga impuestos. Mostrar importe bruto, descuento e importe a pagar. DATOS D. Entrada: marca, precio, cantidad D. Salida: importe bruto (impbruto), descuento (dscto), importe a pagar (importe)
21
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++
CODIFICACIÓN C++ /*............................ PROGRAMA CPP03.02.CPP Procesos Condicion multiple .............................*/ //Inclusion de librerias #include Asd #include //funcion principal void main() { //Declaracion de variables int marca,cantidad; float precio,impbruto,dscto,importe; //Escribir marcas a escoger clrscr(); textcolor(4); gotoxy(30,3);cprintf("MARCAS de DISKETTES"); gotoxy(29,4);cout<<"~~~~~~~~~~~~~~~~~~~~~"; gotoxy(35,6);cout<<"1.- 3M"; gotoxy(35,7);cout<<"2.- NCR"; gotoxy(35,8);cout<<"3.- Sentinel"; gotoxy(35,9);cout<<"4.- Burroughs"; gotoxy(35,10);cout<<"5.- GoldStar"; //Ingreso de datos gotoxy(35,12);cout<<"MARCA: ";cin>>marca; gotoxy(35,13);cout<<"PRECIO: ";cin>>precio; gotoxy(35,14);cout<<"CANTIDAD: ";cin>>cantidad; //Calcular el importe bruto impbruto=cantidad*precio; //Descuento de acuerdo a la MARCA switch(marca) { case 1:dscto=impbruto*0.1;break; case 2:dscto=impbruto*0.15;break; case 3:dscto=impbruto*0.2;break; case 4:dscto=impbruto*0.25;break; case 5:dscto=impbruto*0.3;break; default: cout<<"Lo sentimos no se encuentra esa marca"; } //Calcluar importe a pagar importe=impbruto-dscto; //Escribiendo los resultados cout<<"\nImporte bruto: "<
DIAGRAMA DE FLUJO INICIO Menu Marcas
S
Marca,precio, E cantidad marca
1
Dsto=impbruto*0.1
2
Dsto=impbruto*0.15
3 4 5
Default
Dsto=impbruto*0.2 Dsto=impbruto*0.25 Dsto=impbruto*0.3 No existe esta marca
Impo=impbruto-Dsto
Impbruto, Dsto,impo
s
FIN
Problema CPP03-03
Lea tres números que representen el día, el mes y el año, y diga si forman una fecha correcta. Considere años bisiestos. DATOS D. Entrada: día (d), mes (m), año (a) D. Salida: fecha correcta, fecha incorrecta.
22
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ CODIFICACIÓN C++ /*............................ PROGRAMA CPP03.03.CPP Procesos Condicion multiple .............................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int d,m,a,maxdia; //Ingreso de datos clrscr(); cout<<"\nDia= ";cin>>d; cout<<"Mes= ";cin>>m; cout<<"Anio= ";cin>>a; //Determinar fecha correcta switch(m) { case 1:case 3:case 5:case 7:case 8: case 10:case 12: maxdia=31;break; case 4:case 6:case 9: case 11: maxdia=30;break; case 2:if(!(a%4)&&(a%100)||(a%400)) maxdia=29;break; else maxdia=28;break; default: cout<<"Mes incorrecto"; } //Escribiendo los resultados if((d>0)&&(d<=maxdia)&&(m>0)&&(m<13)&&(a>0)) cout<<"\nLa fecha es correcta"; else cout<<"\nLa fecha es incorrecta"; //Pausa para los resultados getch(); }
Problema CPP03-04
INICIO
DIAGRAMA DE FLUJO
E
d,m,a
m
1,3,5,7,8,10,12
maxdia=31
4,6,9,11
maxdia=30
2
0
aMOD4==0 AND aMOd100!=0 OR aMOD400==0
dias=28
1
dias=29
Mes incorrecto
Default
0
Mes incorrecto
d>0 AND d<=maxdia AND m>0 AND m<13 AND a>0
s
1
Mes correcto
FIN
Determinar el importe a pagar por un alumno de un instituto cuya cuota tiene un porcentaje de descuento que se establece en la siguiente tabla y está en función al colegio de procedencia del alumno; asimismo los importes están exonerados de impuestos. CODIFICACIÓN C++
DATOS D. Entrada: colegio,institut(op) /*............................ PROGRAMA CPP03.04.CPP Cuota. Procesos Condicion multiple D. Salida: Importe a pagar .............................*/ (importe) //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int colegio,op; float cuota,importe,Dscto; //Escribir colegio de procedencia clrscr(); textcolor(3);
23
E. EMMANUEL COAQUIRA M.
s
Algoritmos y su codificación en C++
gotoxy(30,3);cprintf("COLEGIO DE PROCEDENCIA"); gotoxy(29,4);cout<<"~~~~~~~~~~~~~~~~~~~~~~~~"; gotoxy(35,6);cout<<"1.- NACIONAL"; gotoxy(35,7);cout<<"2.- PARTICULAR"; //Ingreso de colegio gotoxy(35,9);cout<<"OPCION: ";cin>>colegio; //Escribir INSTITUTO de estudios clrscr(); gotoxy(34,3);cprintf("INSTITUTO"); gotoxy(33,4);cout<<"~~~~~~~~~~~~~"; gotoxy(35,6);cout<<"1.- A"; gotoxy(35,7);cout<<"2.- B"; gotoxy(35,8);cout<<"3.- C"; //Ingreso de colegio gotoxy(35,10);cout<<"OPCION: ";cin>>op; gotoxy(28,11);cout<<"Ingresar cuota del mes: ";cin>>cuota; switch(colegio) { case 1:switch(op) { case 1:Dscto=cuota*0.5;break; case 2:Dscto=cuota*0.4;break; case 3:Dscto=cuota*0.3;break; } break; case 2:switch(op) { case 1:Dscto=cuota*0.25;break; case 2:Dscto=cuota*0.20;break; case 3:Dscto=cuota*0.15;break; } break; } //Calcluar importe a pagar importe=cuota-Dscto; //Escribiendo los resultados cout<<"\nImporte a pagar: "<
INICIO
DIAGRAMA DE FLUJO
Menu Colegio colegio Menu Instituto op
E
S
E
colegio
1
op
1
Dsto=impbruto*0.5
2
Dsto=impbruto*0.4
3
Dsto=impbruto*0.3
2
op
1
Dsto=impbruto*0.25
2
Dsto=impbruto*0.20
3
Dsto=impbruto*0.15
Impo=impbruto-Dsto
Impo
Problema CPP03-05
S
s
FIN
Una universidad privada tiene una política de descuento en porcentajes sobre el pago de pensiones de enseñanza, que se basa en la profesión del tutor (policía, profesor de colegio, docente universitario, trabajador no docente y otros) y, el rendimiento del alumno (bueno, regular, deficiente), tal como se muestra en el cuadro siguiente: Tabla de descuento (en %) DATOS D. Entrada: ocupación (ocup), rendimiento (rend) D. Salida: descuento (d)
24
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ CODIFICACIÓN C++ /*............................ PROGRAMA CPP03.05.CPP Procesos Condicion multiple .............................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables char ocup,rend; float d; //Escribir ocupacion clrscr(); textcolor(3); gotoxy(35,3);cprintf("OCUPACION"); gotoxy(34,4);cout<<"~~~~~~~~~~~"; gotoxy(35,6);cout<<"P.- POLICIA"; gotoxy(35,7);cout<<"C.- PROF DE COLEGIO"; gotoxy(35,8);cout<<"D.- DOC UNIVERSITARIO"; gotoxy(35,9);cout<<"N.- NO DOCENTE"; gotoxy(35,10);cout<<"0.- OTROS"; //Ingreso de ocupacion gotoxy(33,12);cout<<"OCUPACION: ";cin>>ocup; clrscr(); gotoxy(34,3);cprintf("TIPO DE RENDIMIENTO"); gotoxy(33,4);cout<<"~~~~~~~~~~~~~~~~~~~~~"; gotoxy(35,6);cout<<"A.- BUENO"; gotoxy(35,7);cout<<"B.- REGULAR"; gotoxy(35,8);cout<<"C.- DEFICIENTE"; //Ingreso el rendimiento gotoxy(33,10);cout<<"RENDIMIENTO: ";cin>>rend; switch(ocup) { case 'P':switch(rend) { case 'A':d=0.6;break; case 'B':d=0.3;break; case 'C':d=0.1;break; } break; case 'C':switch(rend) { case 'A':d=0.5;break; case 'B':d=0.2;break; case 'C':d=0.1;break; } break; case 'D':switch(rend) { case 'A':d=0.4;break; case 'B':d=0.2;break; case 'C':d=0.0;break; } break; case 'N':switch(rend) { case 'A':d=0.4;break; case 'B':d=0.1;break; case 'C':d=0.0;break; } break;
25
case 'O':switch(rend) { case 'A':d=0.3;break; case 'B':case 'C':d=0.0;break; } break; } //Escribiendo los resultados cout<<"\nEl descuento sera: "<
DIAGRAMA DE FLUJO
S Menu Ocupación E
ocup
S Menu Rendimiento E
rend
ocup
P
rend
A
D=0.6
B
D=0.3
C
D=0.1
C
rend
A
D=0.5
B
D=0.2
C
D=0.1
D
rend
A
D=0.4
B
D=0.2
C
D=0.0
N
rend
A
D=0.4
B
D=0.1
C
D=0.0
O
rend
A
D=0.3
B,C
D=0.0
D
s
FIN
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ PROBLEMAS PROPUESTOS 1. Muestre las opciones de un menú, seleccione una opción e imprima el mensaje apropiado indicando la opción seleccionada. 2. Construya una calculadora que lea 2 números y un operador, y efectué la operación dada. La calculadora será capaz de realizar las siguientes operaciones básicas (suma, resta, multiplicación, división). 3. Lea un día y un mes cualesquiera y determine a que estación pertenece. Considere que primavera inicia el 23 de setiembre, verano inicia el 21 de diciembre, otoño empieza el 21 de marzo e invierno el 22 de junio. 4. Los signos del zodiaco son 12: Aries (marzo 21 – abril 20), tauro (abril 21 – mayo 20), géminis (mayo 21 – junio 21), cáncer (junio 22 – julio 22), leo (julio 23 – agosto 22), virgo (agosto 23 – setiembre 22), libra (setiembre 23 – octubre 22), escorpio (octubre 23 – noviembre 21), sagitario (noviembre 22 – diciembre 21), capricornio (diciembre 22 - enero 20), acuario (enero 21 – febrero 19) y piscis (febrero 20 – marzo 20). Escriba un programa que lea el día y mes de su nacimiento y determine a que signo pertenece. 5. Dada una fecha cuantos días faltan para que termine el año? 6. Todo el mundo sabe cuántos años tiene, pero ¿Podría contestar a la pregunta cuantos días tiene? 7. Una tienda de ropa ha establecido los porcentajes de descuento, que se indican a continuación, de acuerdo a ciertas características del comprador: nacionalidad (1,2) y del producto que compra: sexo (H,M), talla (Niño, Joven, Adulto). Se sabe que una persona puede comprar varios productos por lo que se desea mostrar como resultados lo siguiente: nombre del comprador, cantidad de productos comprados, importe comprado, importe descontado y el importe a pagar; para lo cual se deben ingresar los datos que sean necesarios. El proceso para la compra de una persona termine cuando al ingresar el nombre del comprador se presiona ENTER.
8. Dada una fecha obtenga el número de día dentro de ese año. Por ejemplo el 26/10/2000 es el día 300 del año 2000. 9. Un alumno es calificado con a, b, c o d. Será bueno si obtuvo un a, regular si obtuvo un b, malo si obtuvo un c, y pésimo si obtuvo un d. Lea un calificativo y escriba que tipo de alumno es. 10. Obtenga el número de días transcurridos entre dos fechas.
26
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++
27
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ PROCESOS REPETITIVOS (MIENTRAS O while) Se llaman así porque la ejecución de sus órdenes y tareas se realizan reiterativamente dependiendo del cumplimiento de una condición para que continúe o para que termine. Ejm. Inicio Contador=1 MIENTRAS (contador<=10) Inicio Ingresar nota Acumular nota Incrementar contador Fin Calcular promedio Imprimir promedio Fin Observe que las ordenes de ingresar nota, acumular nota e incrementar contador se repiten mientras el contador no pase de 10; cuando esto suceda, el proceso repetitivo termina para seguir con el cálculo del promedio y su respectiva impresión.
0
Condicion sea verdad
1 Acciones
C++ While (condición sea verdad) { Acciones; } (1) (2)
(3)
Evalúa la condición Se el resultado es VERDADERO Ejecuta la Acción Regresa al punto (1) Termina la estructura cuando el resultado de la condición es Falso.
La condición puede ser: variable, expresión o el valor de una función; sin embargo, el valor que representa sólo puede ser Verdadero o Falso. La acción, al igual que en los temas anteriores puede estar conformada por una o varias sentencias. Si estuviera conformada por varias sentencias (bloques de sentencias) deben de estar entre llaves.
28
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ Problema CPP04-01 Obtenga el cociente y el residuo de una división calculando la cantidad de veces que un número está contenido en otro, mediante restas sucesivas. Por ejemplo, si el dividiendo es a=5236 y el divisor b=1247, entonces tendremos: 5236 - 1247 = 3989 3989 - 1247 = 2742 2742 - 1247 = 1495 1495 – 1247 = 248 ya no seguimos restando pues 248 es menor que 1247: El cociente estará dado por el número de restas (4) y el residuo por el último número obtenido (248). DATOS D. Entrada: dividendo (a), divisor (b) D. Salida: cociente (coc), Residuo
CODIFICACIÓN C++ /*.............................. PROGRAMA CPP04.01.CPP Procesos Repetitivos: Mientras ..............................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int num,den,coc; float a,b; //Ingresando datos clrscr(); cout<<"\n\tIngrese dividendo: ";cin>>a; cout<<"\tIngrese divisor: ";cin>>b; //calculando coc=0; while(a>b) { a=a-b; coc=coc+1; } //Escribiendo los resultados cout<<"\n\tCociente: "<
DIAGRAMA DE FLUJO
INICIO
a,b
E
coc=0 0
a>b 1
a=a-b coc++
a,coc
s
FIN
29
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ Problema CPP04-02 Calcule los divisores comunes de dos números. divisores comunes de 6 y 18 son 1, 2, 3 y 6.
Por
DATOS D. Entrada: números (a,b) D. Salida: divisores
los
DIAGRAMA DE FLUJO
INICIO
CODIFICACIÓN C++ /*.............................. PROGRAMA CPP04.02.CPP Procesos Repetitivos: Mientras ..............................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int i,a,b; //Ingresando datos clrscr(); cout<<"\n\t\tDivisores comunes de dos numeros"<>a; cout<<"\tIngrese segundo numero: ";cin>>b; //calculando y escribiendo resultados i=1; while(i<=a&&i<=b) { if(a%i==0&&b%i==0) cout<<"\t"<
ejemplo
E
a,b
i=1 0 i<=a AND i<=b
1 0
a%i==0 AND b%i==0
1
i
s
i++
FIN Problema CPP04-03 Hallar la suma de los N primeros términos de la serie. 1 1 1 𝑆 = 2 + 4 + 6 + ⋯ 𝑁 términos. DATOS D. Entrada: cantidad de términos (n) D. Salida: suma de términos (S)
30
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ CODIFICACIÓN C++ /*.............................. PROGRAMA CPP04.03.CPP Procesos Repetitivos: Mientras ..............................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int cont,n; float s,par; //Ingresar dato clrscr(); cout<<"Ingresar cantidad de terminos: ";cin>>n; //calculando la suma cont=1;s=0;par=2; while(cont<=n) { s=s+(1/par); par=par+2; cont=cont+1; } //Inmprimiendo resultados cout<<"La suma de la secuencia es: "<
INICIO
DIAGRAMA DE FLUJO
E
n cont=1,s=0, par=2 0
cont<=n 1
s=s+1/par par+=2 cont++
s
s
FIN
Problema CPP04-04
Lea un número y forme otro número con las cifras en orden inverso. Así si el número es 12345 el nuevo número será 54321. CODIFICACIÓN C++
DATOS D. Entrada: numero (n) D. Salida: inverso (inv) INICIO
DIAGRAMA DE FLUJO
E n inv=0 0
n>0 1
inv*=10-n%10
n/=10
inv
s
/*.............................. PROGRAMA CPP04.04.CPP Procesos Repetitivo: Mientras ..............................*/ //Inclusion de librerias #include #include //funcion principal void main() { //unsigned long da mayor rango unsigned long int n,inv; //Ingresar datos clrscr(); cout<<"Ingresar numero: ";cin>>n; //calculando El inverso inv=0; while(n>0) { inv=10*inv+n%10; n=n/10; } cout<<"El inverso es: "<
FIN
31
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ Problema CPP04-05 Los números Amstrong o cubos perfectos, son aquellos que sumados los cubos de sus dígitos nos dan el mismo número. Por ejemplo 153 es un cubo perfecto pues 13 + 53 + 33 = 153. Lea un número y diga si es o no un cubo perfecto. DATOS D. Entrada: número (n) D. Salida: Es o no es un número Amstrong DIAGRAMA DE FLUJO
CODIFICACIÓN C++ /*.............................. PROGRAMA CPP04.05.CPP Procesos Repetitivos: Mientras ..............................*/ //Inclusion de librerias #include #include #include //funcion principal void main() { //Declaracion de variables int n,temp,sc; //Ingresar datos clrscr(); cout<<"Ingresar numero: ";cin>>n; //calculando los cubos perfectos sc=0; temp=n; while(temp>0) { sc=sc+pow(temp%10,3); temp=temp/10; } //Inmprimiendo resultados if(n==sc) cout<<"\nEs cubo perfecto"; else cout<<"\nNo es cubo perfecto"; //Pausa para los resultados getch(); }
INICIO E n sc=0, temp=n 0
temp>0 1
sc+=(temp%10)^3
temp/=10
0
No es
n==sc
s
1
Es
FIN
32
E. EMMANUEL COAQUIRA M.
s
Algoritmos y su codificación en C++ PROBLEMAS PROPUESTOS 1. La secuencia de Fibonacci, es muy conocida en los círculos matemáticos y tiene la particularidad que cada número es igual a la sumas de los 2 anteriores términos. La serie de Fibonacci comienza con los números 0 y 1, produciendo la siguiente secuencia: 0, 1, 1, 2, 3, 5, 8, 13, …, etc. Muestre todos los números de Fibonacci que sean menores que un número dado, además indicando la suma de los mismos. 2. Escriba un algoritmo que diga si un número es primo. 3. Escriba un programa que permita reducir una fracción a su mínima 28 7 expresión. Por ejemplo 64 = 16. 4. Determinar la cantidad de dígitos que tiene un número entero y además mostrar la suma delos dígitos pares é impares. Considerar cero (0) como dígito par. 5. El máximo común divisor (mcd) de un conjunto de números es el máximo número; que divide exactamente a todos ellos. Construya un programa que encuentre el MCD de dos números. 6. El factorial de un número se define como el producto de todos los números consecutivos desde la unidad hasta el número y se denota por el símbolo de (!). Por ejemplo 4!=4x3x2x1, teniendo en cuenta esto, lea un número y encuentre su factorial. 7. Un número es capicúa o políndromo, si el número es tal que invirtiendo sus cifras da el mismo número. Asi 12321 es capicúa porque invirtiendo sus cifras 12321. Escriba un algoritmo que diga si un número ingresado es capicúa. 8. Se sabe que 𝑛2 = 1 + 3 + 5 + 7 + 2𝑛 − 1. Se pide leer un número y calcular su cuadrado haciendo uso de esta relación. 9. El mínimo común múltiplo (mcm) de 2 o más números, es el menor número que lo contiene a todos ellos una cantidad exacta de veces. Construya un algoritmo para calcular el mcm de 2 números leídos por teclado. 10. Mostrar los N primeros términos de la siguiente serie, indicando además la suma de los mismos. 7,9,12,16,21, …
33
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++
34
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ PROCESOS REPETITIVOS (HACER-MIENTRAS O do-while) Se llaman así porque la ejecución de sus órdenes y tareas se realizan reiterativamente dependiendo del cumplimiento de una condición para que continúe o para que termine. Es un proceso complementario al anterior. Ejm. Inicio Contador=1 HACER Ingresar nota Acumular nota Incrementar contador MIENTRAS (contador<=10) Calcular promedio Imprimir promedio Fin Observe que en este proceso, primero se ejecutan las órdenes y luego se evalúa la condición; a diferencia del proceso anterior que era al contrario.
Ejecuta las sentencias Evalúa la condición Si el resultado es VERDADERO regresa al punto (1) Termina cuando el resultado de la condición es FALSO
Lo que va entre llaves son las sentencias a ejecutar repetitivamente mientras la condición sea verdad. La condición, al igual que en los temas anteriores puede ser: variable, expresión, función; sin embargo, el valor que representa solo puede ser verdadero o falso.
35
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ Problema CPP05-01 En el museo de arte un estudiante desea determinar para cierto día, el promedio de edad así como el número de visitantes por sexo para lo cual anota, desde que se abre las puertas hasta el cierre de las mismas, el sexo (H,M) y la edad de cada visitante. Al final del día dicho estudiante escriba cero como sexo para dar por terminado su proceso y mostrar los resultados requeridos. DATOS D. Entrada: sexo, edad D. Salida: Número de visitantes Hombres(contH) Número de visitantes Mujeres(contM) Promedio de edad para Hombres(sumedH/contH) Promedio de edad para Mujeres(sumedM/contM)
CODIFICACIÓN C++
DIAGRAMA DE FLUJO
INICIO
E
sexo
Sexo!=M!=H!=F
0
1 Sexo!=F
edad
sexo H
M
sumedH+=edad sumedH+=edad contH++ contH++
Sexo!=F contH,PromH contM,promM
s
E
/*...................................... PROGRAMA CPP05.01.CPP Procesos Repetitivos: Hacer-Mientras ......................................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables unsigned int sumedH,sumedM; int contH,contM,edad; float prom; char sexo; //Inicializar elementos contH=contM=sumedH=sumedM=0; //Proceso Repetitivo clrscr(); do{ do{ cout<<"Ingrese sexo : ";cin>>sexo; }while(sexo!='M'&&sexo!='H'&&sexo!='F'); if(sexo!='F') { cout<<"Ingrese la edad: ";cin>>edad; switch(sexo) { case 'H':sumedH=sumedH+edad; contH++;break; case 'M':sumedM=sumedM+edad; contM++;break; } } }while(sexo!='F'); //Mostrar resultados cout<<"\nNumero de visitantes Hombres: "<
FIN
36
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ Problema CPP05-02 ¿Cuál es la máxima área de terreno que se puede obtener si las longitudes de un terreno son x y (20-x)? DATOS D. Salida: Área máxima (areamax), Dimensiones
INICIO
DIAGRAMA DE FLUJO
x=areamax=0
inc=0.0001
x+=inc area=x(20-x) area>areamax
areamax=area xmax=x
x<=20-inc
Areamas dimensiones
s
FIN
CODIFICACIÓN C++ /*...................................... PROGRAMA CPP05.02.CPP Procesos Repetitivos: Hacer-Mientras ......................................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables float x,xmax,area,areamax,inc; //Inicializar elementos x=areamax=0; inc=0.0001;//Incremento //Proceso Repetitivo clrscr(); do{ x=x+inc; area=x*(20-x); if(area>areamax) { areamax=area; xmax=x; } }while(x<=20-inc); //Mostrar resultados cout<<"\nArea maxima: "<
Problema CPP05-03 Para “n” múltiplo de 4 y “n” mayor que 8 y menor igual que 32, escribir los enteros positivos desde el 1 al “n” de manera que a la salida sea 4 números en una línea.
DATOS D. Entrada: n: múltiplo de 4 y mayor que 8 y menor igual que 32 D. Salida: i i+1 i+2 i+3
37
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ CODIFICACIÓN C++ /*...................................... PROGRAMA CPP05.03.CPP Procesos Repetitivos: Hacer-Mientras ......................................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int i,n; //Proceso Repetitivo do{ clrscr(); cout<<"\nIngresar 8>n; }while((n%4)!=0||n<=8||n>32); //Inicializar elementos i=0; //Mostrar Resultados cout<
DIAGRAMA DE FLUJO
INICIO
E
n 1
(n%4) != 0 OR n<=8 OR n>32
0
i=0
s
i,i+1,i+2, i+3
i=i+4
i<=n
FIN
Problema CPP05-04 1 3
1 5
1 7
Encuentre el valor de 𝜋 sabiendo que la suma de la serie 1 − + − + 1 9
− ⋯ es igual a 𝜋/4.sugerencia considere los términos cuyo valor absoluto sea mayor a 0.000001. CODIFICACIÓN C++
DATOS D. Salida: valor de pi DIAGRAMA DE FLUJO
INICIO i=1 Pi4=0 n Signo=-1
signo=-signo pi4+=signo(1/i)
i+=2
1 1/i>0.000001
0
pi
FIN
38
s
/*...................................... PROGRAMA CPP05.04.CPP Procesos Repetitivos: Hacer-Mientras ......................................*/ #include #include void main() { float i,pi4,signo; //Inicializar elementos i=1; pi4=0; signo=-1; //Proceso Repetitivo clrscr(); do{signo=-signo;//cambia signo en cada iteracion pi4=pi4+signo*(1/i); i+=2;//actua similar al i=i+2 }while(1/i>0.000001); //Mostrar Resultados cout<<"\n\tPi vale: "<<4*pi4; getch(); }
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ Problema CPP05-05 Un estudiante ha registrado 10 instituciones que dictan un curso de computación de su interés, a diferentes costos. Desea determinar el costo promedio del curso, el costo más elevado, el costo más bajo y el nombre de la institución que ofrece el costo más bajo. Se sabe además que ningún costo llega a tener 4 cifras. DATOS D. Entrada: nombre de institución (N), costo del curso (costo) D. Salida: costo promedio (cosprom) CODIFICACIÓN C++ costo mayor (cosmay) /*...................................... costo menor (cosmen) PROGRAMA CPP05.05.CPP nombre de quien tiene Procesos Repetitivos: Hacer-Mientras el costo menor (M) ......................................*/ DIAGRAMA DE FLUJO
INICIO cont=1 suma=0 n cosmay=0 Cosmen=999 N, costo E Suma+=costo
0
1
costo>cosmay
cosmay=costo
0
1
costo>cosmen
cosmen=costo
M=N
cont++
1 1/i>0.000001
0
cosprom=suma/5
Cosprom Cosmay, Cosmen M
FIN
39
s
//Inclusion de librerias #include #include #include //funcion principal void main() { //Declaracion de variables int cont; float costo,suma,cosprom,cosmay,cosmen; char N[30],M[30]; //Inicializar elementos cont=1;//contador de instituciones suma=0;//acumulador de costos cosmay=0;//supuesto falso del mayor costo cosmen=999;//supuesto falso del menor costo //Proceso Repetitivo do{ clrscr(); cout<<"\nNombre de institucion"<>N; cout<<"Costo del curso: ";cin>>costo; //Acumular costos suma+=costo;//actua igual a suma=suma+costo //Determina el costo mayor if(costo>cosmay) cosmay=costo; //Determinar el costo menor e idenftifica su nombre if(costo
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ PROBLEMAS PROPUESTOS 1. Lea una serie de números hasta ingresar el valor de cero. Luego indique cuantos números positivos, negativos, pares e impares fueron ingresados. 2. Hallar la raíz cuadrada de un número por el método de Newton. 3. A una fiesta ingresan personas de diferentes edades, no se permite el ingreso de menores de edad. Se pide hallar la edad menor, la mayor y el promedio de edades. El ingreso debe terminar cuando la edad ingresada sea cero. 4. Mostrar los N primeros términos de la siguiente serie, donde N debe estar entre 5 y 30. 5,7,10,14,19,… 5. Se tiene una lámina rectangular de largo y ancho conocidos a la que se recorta un cuadrado de lado x en cada esquina con el objeto de formar una caja. ¿Cuáles son las dimensiones de esta caja, si se desea que el volumen sea el máximo posible? 6. Lea un número positivo y pártalo en dos sumandos de forma que su producto tenga un valor máximo. 7. En un cajero se muestra un menú de opciones retiro, saldo, depósito y salir; un cliente realiza sucesivos retiros desde este cajero, si posee 1000 al inicio de las operaciones. Escriba un algoritmo que efectué dichas operaciones y que permita a un cliente retirar dinero mientras tenga fondos. 8. Una vendedora de pan tiene n unidades de pan al comenzar el día. Si cada cliente le pide m panes, ¿Cuántos clientes son atendidos completamente?¿Cuántos panes quedan para el último cliente? 9. En una universidad se pueden llevar hasta 22 créditos en un ciclo. Escriba un algoritmo que permita a un alumno matricularse, si pasarse del límite de créditos permitido. 10. Una ventana tiene forma de rectángulo culminado por un semicírculo. El perímetro de la ventana es 6m. ¿Cuáles son sus dimensiones si debe dejar pasar el máximo de luz?
40
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++
41
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ PROCESOS REPETITIVOS (PARA o for) Se llaman así porque la ejecución de sus órdenes y tareas se realizan reiterativamente dependiendo del cumplimiento de una condición para que continúe o para que termine. Es un proceso complementario a los anteriores. Ejm. Inicio PARA (contador=1;contador<=10;incrementar contador) Inicio Ingresar nota Acumular nota Fin Calcular promedio Imprimir promedio Fin Observe que este proceso inicializa el contador, evalúa la condición e incrementa el contador en una sola línea; sin embargo, la inicialización lo hace una sola vez, la condición la evalúa cada vez que va a realizar el proceso y el incremento del contador lo hace cada vez que termina el proceso repetitivo.
inic;cond;incr
Accion
C++ for(inicialización;condición;incremento) { Accion; } (1) Contador toma como valor inicial el valor de valor_inicial (2) Si contador <=valor_final, entonces Ejecuta acción Incrementa el contador en una unidad Regresa al punto (2) (3) Termina cuando el contador sea MAYOR que el valor_final En la parte de inicialización se debe dar un valor inicial a la variable que va a controlar el proceso repetitivo. La condición establece la continuidad o el término del proceso. Normalmente en esta condición interviene la variable inicializada. En el incremento se debe hacer el incremento necesario a la variable de inicialización para que ésta pueda hacer variar la condición. La Acción, al igual que en los temas anteriores, puede estar conformada por una ó por varias sentencias. Si estuviera conformada por una sentencia no necesita llaves.
42
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ Problema CPP06-01 Calcular la suma, suma de cuadrados y la suma de cubos de los N primeros números naturales. DATOS D. Entrada: cantidad de números naturales (numN) D. Salida: suma (s), suma cuadrados (sc), suma cubos (scu) DIAGRAMA DE FLUJO
CODIFICACIÓN C++ /*............................ PROGRAMA CPP06.01.CPP Procesos Repetitivos: Para ............................*/ //Inclusion de librerias #include #include #include //funcion principal void main() { //Declaracion de variables long s,sc,scu; int num,numN; //Ingresar cantidad de numeros naturales clrscr(); cout<<"Cantidad de numeros: ";cin>>numN; //Inicializar ACUMULADORES s=sc=scu=0; //Acumular Sumas for(num=1;num<=numN;num++) { s+=num;//s=s+cont sc+=pow(num,2); scu+=pow(num,3); } //Mostrar resultados cout<<"\nLa suma es: "<
INICIO numN
E
s=sc=scu=0
num=1;num<=numN;num++
s+=num
sc+=num^2
scu+=num^3
s, sc, scu
S
FIN
Problema CPP06-02 Hallar la suma S: 𝑆=
DATOS D. Entrada: valor de D. Salida: suma (s)
43
1 1 1 + +⋯+ 1 + 𝑥 1 + 2𝑥 1 + 𝑛𝑥
x, cantidad de sumandos (n)
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ CODIFICACIÓN C++ /*............................ PROGRAMA CPP06.02.CPP Procesos Repetitivos: Para ............................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables float x,s; int i,n; //Ingresar variables clrscr(); cout<<"Ingresar el valor de x: ";cin>>x; cout<<"Ingresar n: ";cin>>n; //Inicializar ACUMULADORES s=0; //Acumular Sumas for(i=1;i<=n;i++) s+=1.0/(1+i*x); //Mostrar resultados cout<<"\nLa suma total es: "<
DIAGRAMA DE FLUJO
INICIO n,x
E
s=0
i=1;i<=n;i++
s+=1.0/(1+i*x)
s
S
FIN
Problema CPP06-03 Un vehículo recorre n distancias en n tiempos diferentes ¿Cuál será su velocidad promedio para toda la trayectoria? DATOS D. Entrada: numero de tramos (n) Distancia (d), tiempo (t) D. Salida: velocidad media (dt/tt) DIAGRAMA DE FLUJO
INICIO n dt=tt=0
i=1;i<=n;i++
D,t
E
dt+=d
tt+=t
dt/tt
FIN
44
S
CODIFICACIÓN C++ /*............................ PROGRAMA CPP06.03.CPP Procesos Repetitivos: Para ............................*/ #include #include //funcion principal void main() { float d,t,dt,tt; int i,n; clrscr(); cout<<"Numero de tramos: ";cin>>n; dt=tt=0; for(i=1;i<=n;i++) { cout<<"TRAMO "<>d; cout<<"Tiempo (t): ";cin>>t; dt+=d; tt+=t; } cout<<"\nVelocidad media del trayecto: "<
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ Problema CPP06-04 Cuatro artículos cuestan 3, 7, 19 y 23 soles respectivamente. ¿Cuáles son las posibles cantidades que podemos adquirir de cada artículo, si disponemos de 113 soles y deseamos gastarlo todo? DIAGRAMA DE FLUJO
DATOS D. Salida: cantidad de artículos
INICIO a=0;a<=113/3;a++
CODIFICACIÓN C++ /*............................ PROGRAMA CPP06.04.CPP Procesos Repetitivos: Para ............................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int a,b,c,d; //calculando posibles cantidades for(a=0;a<=113/3;a++) for(b=0;b<=113/7;b++) for(c=0;c<=113/19;c++) for(d=0;d<=113/23;d++) //imprimiendo cantidades if(3*a+7*b+19*c+23*d==113) cout<<"\n"<
b=0;b<=113/7;b++
O dejar tu comentario en la misma Web -.-la cual ya ha sido antes mencionada-.-
¿Por qué no me haces tu amigo?. Creo que me lo merezco ¿No?
69
E. EMMANUEL COAQUIRA M.
Algoritmos y su codificación en C++ AGRADECIMIENTOS Esta primera edición ha sido posible gracias al apoyo de todos mis amigos, por darme su invalorable ayuda y sus muchísimas ganas puestas en esta publicación. A mi padre, por su forma de decirme que me quiere y que siga estudiando, que siga adelante; y diciéndome PARA TODO HAY TIEMPO. A mi madre, por estar siempre a mi lado y apoyándome en todo momento, comprenderme y decirme que siga adelante a pesar de todo. A mis hermanitos, por estar ahí conmigo en las buenas y malas, por molestarme y por los grandes momentos de alegría que compartimos y compartiremos. A mi amor, por confiar, creer en mí, dándome apoyo, y diciendo siempre que si puedo lograrlo, por eso y más te quiero mí niña. A mis amigos DKM, NyD, por brindarme en todo momento su ayuda y disponibilidad permanente para intercambiar ideas. A usted, amigo lector por su interés en adquirir este libro que estoy seguro contribuirá en incrementar su conocimiento actual.