ESCUELA DE INGENIERIA DE SISTEMAS Gua de Laboratorio de Algoritmos Sesin N 0 2 EL ENTORNO DEL BORLAND C++
INTRODUCCION
El concepto de algoritmo, aunque similar y obviamente relacionado, no debe confundirse con el concepto de programa. Mientras el primero es la especificacin de un conjunto de pasos (operaciones, instrucciones, rdenes,...) orientados a la resolucin de un problema, el segundo es el conjunto de operaciones especificadas en un determinado lenguaje de programacin y para un computador concreto, susceptible de ser ejecutado (o compilado). Un algoritmo, estrictamente hablando, no puede ejecutarse hasta que se implementa, ya sea en un lenguaje de programacin, en un circuito elctrico, en un aparato mecnico, usando papel y lpiz, o en algn otro modelo de computacin. El software que usaremos para la prueba y ejecucin de los algoritmos desarrollados en aula ser el Borlan C++ 4.5, el cual es sencillo de manejar por su entorno prctico, y permitir al alumno digitar sus soluciones algortmicas para probar la lgica de sus planteamientos.
I. OBJETIVOS
1. Conocer el Borlan C++. 2. Codificar, compilar y ejecutar los ejercicios de aplicacin.
II. IMPORTANTE
Antes de comenzar a manipular el Borland C++, crearemos siempre, una carpeta, donde se guardarn todas las aplicaciones realizadas en el presente laboratorio. Para ello realice lo siguiente: Ingrese al Explorador del Windows (puede hacerlo dando clic derecho sobre el Botn Inicio de la Barra de Tareas y seleccione la opcin Explorar). La ventana del Explorador esta dividida en dos columnas, en la columna de la izquierda busque hacia abajo la unidad de almacenamiento (D:) y de un clic izquierdo sobre l. Luego dirija el mouse hacia la columna de la derecha y en un sector vaco, presione clic derecho, seleccione la opcin Nuevo y luego la opcin Carpeta. Aparecer una carpeta amarilla con un texto: Nueva Carpeta sombreado en azul, digite sobre l, el nombre para su carpeta (este puede ser LABORAT-1), luego de digitar presione la tecla Enter. Listo, ya tiene su carpeta dentro de la cual guardar todo lo que trabaje a continuacin. Cierre la ventana del Explorador del Windows.
III. MANEJO DEL SOFTWARE
2 Para ingresar al Borland C++, puede verificar en el escritorio del Windows si aparece el icono de acceso directo y de doble clic sobre l, sino aparece, puede dirigirse al Botn Inicio
seleccionar la opcin Programas, y de la lista que se despliega, seleccionar Borlan C++ 4.5 a continuacin de la siguiente lista, la opcin Borlan C++.
Se mostrar la siguiente ventana, que es el entorno de trabajo del Borland C++.
El cursor aparece disponible en la ventana de la hoja de trabajo (hoja en blanco) para que pueda digitar su programa. NOTA: a) Si aparece la hoja escrita con algn cdigo, cierre solo la ventana de la hoja de trabajo. b) Si no aparece la hoja de trabajo, o la cerr, dirjase al men File y seleccione la opcin New, con ello aparecer una nueva hoja de trabajo donde podr comenzar a digitar.
1. Digite el cdigo de su algoritmo, por ejemplo: #include <iostream.h> void main( ) { float sb, mv1, mv2, mv3, extra1, extra2, extra3, totextra, sueldo; cout<< Ingresar sueldo base <<endl; cin>> sb; cout<< Ingresar monto de la 1 venta <<endl; cin>> mv1; cout<< Ingresar monto de la 2 venta <<endl; cin>> mv2; cout<< Ingresar monto de la 3 venta <<endl; cin>> mv3; extra1 = mv1 * 0.10; extra2 = mv2 * 0.10; extra3 = mv3 * 0.10; totextra = extra1 + extra2 + extra3; sueldo = sb + totextra;
cout<< El total de dinero extra es: << totextra; cout<< El salario de mes es: << sueldo; 3 }
2. Guarde su archivo, para ello dirjase al men File y seleccione la opcin Save as , le mostrar el siguiente cuadro de dilogo:
Seleccione de la parte inferior central de la ventana (Drivers:) el disco D: En la ventana superior aparecern todas las carpetas creadas en la unidad D:, usted busque la suya (por ejemplo: LABORAT-1) y de doble clic sobre l. En la ventana del lado izquierdo digite el nombre de su programa (por ejemplo: ejercicio1). Presione el botn OK. NOTA: asegrese que su archivo quedo guardado, mirando el ttulo de la ventana donde digito su programa (hoja de trabajo), este debe figurar con el nombre ejercicio1 (o con el nombre que usted lo guard).
3. Compile su programa para que ste sea traducido de lenguaje de alto nivel a lenguaje de mquina, para ello dirjase al men Project y seleccione la opcin Compile, o presione las teclas Alt + F9, le mostrar una ventana donde le indicar si hay errores o no de traduccin.
Si aparecen errores, presionar la tecla OK. En la parte inferior aparecer una ventana con la lista de errores detectados, verifique el primer error, corrija su cdigo y vuelva a compilar, as sucesivamente uno por uno, hasta tener 0 errores. Cuando tenga 0 errores, presione la tecla OK.
4. Ejecute su programa para comprobar si los ingresos, el proceso y la salida que esta proporcionando su programa son lo que usted espera. Para ello presione el botn Run de la 4 barra de herramientas. Se mostrar una ventana donde estar la frase que usted digit como entrada para su programa, complete todos los datos que le solicita y verifique que los resultados que esta proporcionado su programa son correctos. Si no fueran correctos, cierre la ventana de ejecucin y verifique su cdigo, corrija algn mal clculo o alguna mala asignacin de variables y vuelva a compilar, ejecutar y verificar con nuevos datos si los resultados son correctos. Pruebe varias veces su programa con distintos datos para garantizar el buen funcionamiento de su aplicacin. Cuando todo este bien, cierre la ventana donde digito su programa (hoja de trabajo) y, a continuacin genere una nueva hoja de trabajo para que pueda digitar el cdigo de su siguiente algoritmo. Esto lo puede hacer dirigindose al men File y seleccione la opcin New, con ello aparecer la nueva hoja de trabajo para comenzar a digitar.
Contine con los pasos del 1 al 4 para cada uno de los ejercicios que realice.
IV. EQUIPOS Y MATERIALES Computadora personal Programa Borland C++ 4.5 instalado Cuaderno de clases, donde estn los ejercicios resueltos en pseudocdigos.
V. METODOLOGIA Y ACTIVIDADES
a) Encender el computador. b) Crear carpeta donde guardar sus programas. c) Ingresar al Borland C++ 4.5 d) Codificar los algoritmos desarrollados en el aula. e) Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de prctica encargado para la calificacin correspondiente. f) Guardar la carpeta de sus archivos a sus memorias. g) Retirarse del laboratorio de forma ordenada.
ALGORITMOS Gua Practica N 2
1. Dado un nmero natural de 4 cifras disee un algoritmo que permita obtener el revs del nmero. As, si se lee el nmero 2358, el algoritmo deber imprimir 8532. Solucin: #include<iostream.h> void main() { int n,x,mil,cen,dec,uni,nr; cout<<"Ingresar numero de 4 cifras: "; cin>>n; x=n; mil=x/1000; x=x%1000; cen=x/100; x=x%100; dec=x/10; uni=x%10; nr=uni*1000+dec*100+cen*10+mil; cout<<"El numero original es: "<<n<<endl; cout<<"Y el numero al reves es: "<<nr<<endl; } 5 2. Determinar el valor de la hipotenusa de un triangulo rectngulo aplicando el teorema de Pitgoras, el permetro y el rea conociendo el valor de sus catetos. 3. Construir un algoritmo que calcule el monto que pagar un determinado alumno en el momento de la matricula, sabiendo que dicho alumno realiza una matrcula por crditos, el costo de cada crdito es de S/.27.50. La Cantidad de crditos por ciclo es del total de 21. 4. En un sistema de numeracin inglesa la estatura de una persona esta dada por la suma de los pies y pulgadas que tiene. As por ejemplo una persona puede medir 5 pies con 4 pulgadas. Construir un algoritmo que exprese este tipo de medida a metros. Se sabe que: 1 pie = 12 pulgadas, 1 pulgada = 2.54 cm y 1 metro = 100 cm. Solucin: #include <iostream.h> void main() { float pie,pul,pul1,pult,cm,mt; cout<<"Ingresar cantidad de pies: "; cin>>pie; cout<<"Ingresar cantidad de pulgadas: "; cin>>pul; pul1=pie*12; pult=pul+pul1; cm=pult*2.54; mt=cm/100; cout<<"La persona mide: "<<mt<<" centimetros"<<endl; } 5. Un hospital ha recibido una donacin especial que ser repartida de la siguiente manera: 45% para Medicina General, 30% para Cardiologa, 15% para Pediatra y el resto para Traumatologa. Disee un algoritmo que determine cuanto recibir cada rea. 6. Construir un algoritmo que calcule el monto mensual que adeuda un cliente que compra un equipo de sonido al crdito, sabiendo que el monto de compra recibe un incremento del 19% de impuesto, as como, de 5% de inters mensual por cada letra que fracciona. Solucin: #include <iostream.h> void main() { float costo,igv,costoneto,pmensual,inc,pfinal; int cuota; cout<<"Ingresar costo del equipo de sonido: "; cin>>costo; cout<<"Ingresar cantidad de cuotas: "; cin>>cuota; igv=costo*0.19; costoneto=costo+igv; pmensual=costoneto/cuota; inc=pmensual*0.05; pfinal=pmensual+inc; cout<<"La cuota mensual es: "<<pfinal<<" soles"<<endl; } 7. disee un algoritmo para convertir una cantidad dada en pulgadas a pies, yardas y centmetros. Se sabe que: 1 yarda = 3 pies, 1 pie = 12 pulgadas, 1 pulgada = 2.54 cm , 1 metro = 100 cm 8. Dada la capacidad de un recipiente en galones, disee una algoritmo que exprese dicha capacidad en litros, metros cbicos y pies cbicos. Considere que: 1 pie cbico = 0.0283 metros cbicos, 1 galn = 3.79 litros, 1 metro cbico = 1000 litros 6 9. Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas invierte una cantidad distinta. Obtener el porcentaje que cada quien invierte con respecto a la cantidad total invertida. 10. Disee un algoritmo que determine el porcentaje de varones y de mujeres que hay en un saln de clase.
Universidad Juan Pablo II ESCUELA DE INGENIERIA DE SISTEMAS Gua de Laboratorio de Algoritmos Sesin N 0 3 CODIFICANDO CON ESTRUCTURAS SECUENCIALES
I. OBJETIVOS
Al trmino de esta experiencia, el estudiante ser capaz de: 1. Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos. 2. Identificar los diversos errores de compilacin y corregirlos adecuadamente. 3. Plantear correctamente las estructuras secuenciales en cdigo C++. 4. Usar correctamente el programa.
II. FUNDAMENTO TEORICO
Para alcanzar los objetivos de esta experiencia, es necesario tener en consideracin los siguientes aspectos tericos: Estructura Secuencial Se caracteriza porque una accin se ejecuta detrs de otra. El flujo del programa coincide con el orden fsico en el que se han ido poniendo las instrucciones. Dentro de este tipo podemos encontrar operaciones de inicio/fin, inicializacin de variables, operaciones de asignacin, clculo, sumarizacin, etc. Este tipo de estructura se basa en las 5 fases de que consta todo algoritmo o programa: 1. Definicin de variables (Declaracin) 2. Inicializacin de variables. 3. Lectura de datos 4. Clculo 5. Salida
7 III. EQUIPOS Y MATERIALES
Computadora personal Programa Borland C++ 4.5 instalado Cuaderno de clases, donde estn los ejercicios resueltos en pseudocdigos.
IV. PROCEDIMIENTO
a) Encender el computador. b) Crear carpeta donde guardar sus programas. c) Ingresar al Borland C++ 4.5 d) Codificar los algoritmos desarrollados en el aula. e) Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de prctica encargado para la calificacin correspondiente. f) Guardar la carpeta de sus archivos a sus memorias. g) Retirarse del laboratorio de forma ordenada.
1. Disee un algoritmo que intercambie las cifras de las unidades de dos nmeros naturales. Solucin: # include<iostream.h> void main() { int n1,n2,u1,u2; cout<<"Ingresar primer numero: "; cin>>n1; cout<<"Ingresar segundo numero: "; cin>>n2; u1=n1%10; u2=n2%10; n1=(n1-u1)+u2; n2=(n2-u2)+u1; cout<<"Los numeros con las unidades intercambiadas son: "<<n1<<" y "<<n2<<endl; } 2. En una tienda se ha puesto en oferta la venta de cierto tipo de producto ofreciendo un descuento fijo del 11% del monto de la compra. Disee un algoritmo que determine el monto original de la compra, el monto del descuento y el monto a pagar por la compra de cierta cantidad de unidades del producto. 3. Un alumno desea saber cual ser su calificacin al final de un curso, sabiendo que dicha calificacin se compone de los siguientes porcentajes: 55% del promedio de sus tres practicas 30% de la calificacin del examen final 15% de la calificacin del trabajo final Solucin: #include <iostream.h> void main () { int p1,p2,p3,exf,trab,prom; float porcp,porcexf,porctraf,nf; cout<<"Ingresar notas de las practicas 1, 2 y 3: "; cin>>p1>>p2>>p3; cout<<"Ingresar nota de examen final: "; cin>>exf; cout<<"Ingresar nota de trabajo final: "; cin>>trab; prom=(p1+p2+p3)/3; porcp=prom*0.55; porcexf=exf*0.30; porctraf=trab*0.15; nf=porcp+porcexf+porctraf; cout<<"El porcentaje de las 3 practicas es: "<<porcp<<endl; cout<<"El porcentaje del examen final es: "<<porcexf<<endl; cout<<"El porcentaje del trabajo final es: "<<porctraf<<endl; cout<<"La nota final del alumno es: "<<nf<<endl; } 4. El dueo de una tienda compra un artculo a un precio determinado. Obtener el precio en que lo debe vender para obtener una ganancia del 30%. 9 5. Disee un algoritmo para repartir una cantidad de dinero a tres personas en forma proporcional a sus edades. El monto que le corresponde a cada persona se calcula con la siguiente formula: Monto de la persona = edad de la persona * monto a repartir Suma total de edades 6. Disee un algoritmo que lea la capacidad de un disco duro en gigabytes y lo convierta a megabytes, kilobytes y bytes. 1 kilobytes = 1024 bytes 1 megabytes = 1024 kilobytes 1 gigabytes = 1024 megabytes 7. Construir un algoritmo que lea una temperatura en grados Centgrados y calcule su equivalente en grados Fahrenheit, Kelvin y Rankine. C = F 32 = K 273 = R 492 5 9 5 9 8. Dado un nmero natural de 5 cifras, disee un algoritmo que determine la suma y el producto de las cifras del nmero. 9. Dada una hora del da en el formato hh:mm:ss, disee un algoritmo que determine que tiempo falta para terminar el da, expresado tambin en el formato hh:mm:ss. 10. Disee un algoritmo para sumar dos tiempos. Ambos tiempos vienen dados en el formato HH:MM:SS. La suma tambin debe ser expresada de la misma manera. Solucin: #include<iostream.h> void main() { int s1,m1,s2,m2,h1,h2,sp,ma,sf,mp,ha,mf,hp,hf; cout<<"Ingresar primer tiempo: "; cin>>h1>>m1>>s1; cout<<"Ingresar segundo tiempo: "; cin>>h2>>m2>>s2; sp=s1+s2; ma=sp/60; sf=sp%60; mp=m1+m2+ma; ha=mp/60; mf=mp%60; hp=h1+h2+ha; hf=hp%24; cout<<"La suma de los 2 tiempos es: "<<hf<<":"<<mf<<":"<<sf<<endl; }
10
Universidad Juan Pablo II ESCUELA DE INGENIERIA DE SISTEMAS Gua de Laboratorio de Algoritmos N 0 4 y 5 CODIFICANDO CON ESTRUCTURAS SELECTIVAS USO DEL CONTROL if - else
I. OBJETIVOS Al trmino de esta experiencia, el estudiante ser capaz de: 1. Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos. 2. Identificar los diversos errores de compilacin y corregirlos adecuadamente. 3. Plantear correctamente en cdigo C++ el control selectivo if - else. 4. Usar correctamente el programa.
II. FUNDAMENTO TEORICO Para alcanzar los objetivos de esta experiencia, es necesario tener en consideracin los siguientes aspectos tericos: Estructura Selectiva (control if) Se identifican porque estn compuestos de una condicin. La estructura si - entonces evala la condicin y en tal caso: Si la condicin es verdadera, entonces ejecuta la accin o acciones si son varias. Si la condicin es falsa, entonces puede no hacerse nada, o en algunos casos estas estructuras lgicas tambin permiten controlar cuando se tienen dos opciones de accin (sino), por la naturaleza de estas se debe ejecutar una o la otra, pero no ambas a la vez, es decir, son mutuamente excluyentes.
En la solucin de problemas encontramos numerosos casos en los que luego de tomar una decisin y marcar el camino correspondiente a seguir, es necesario tomar otra decisin. Dicho proceso puede repetirse numerosas veces. En aquellos problemas en donde un bloque condicional incluye otro bloque condicional se dice que un bloque de alternativa mltiple.
Por ejemplo: Cdigo trabajado con el control if que indica si un nmero ingresado es positivo, negativo o cero: #include <iostream.h> void main( ) { int n; cout<<Ingresar nmero: ; cin>> n ; if (n > 0) cout << Positivo; else if (n < 0) cout<< Negativo; else cout <<Es cero; }
11 III. EQUIPOS Y MATERIALES
Computadora personal Programa Borland C++ 4.5 instalado Cuaderno de clases, donde estn los ejercicios resueltos en pseudocdigos.
IV. PROCEDIMIENTO
a) Encender el computador. b) Crear carpeta donde guardar sus programas. c) Ingresar al Borland C++ 4.5 d) Codificar los algoritmos desarrollados en el aula. e) Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de prctica encargado para la calificacin correspondiente. f) Guardar la carpeta de sus archivos a sus memorias. g) Retirarse del laboratorio de forma ordenada.
ALGORITMOS Estructuras Selectivas (if - else) Gua Practica N 4 y N 5
1. Construir un algoritmo que permita ingresar 3 nmeros enteros positivos y que determine cual de ellos es el mayor, cual es el menor y cual es el nmero medio. Solucin: # include <iostream.h> void main() { int n1,n2,n3,mayor=0,menor=9999,medio; cout<<"Ingresar 1er numero: "; cin>>n1; cout<<"Ingresar 2do numero: "; cin>>n2; cout<<"Ingresar 3er numero: "; cin>>n3; if(n1>mayor) mayor=n1; if(n2>mayor) mayor=n2; if(n3>mayor) mayor=n3; if(n1<menor) menor=n1; if(n2<menor) menor=n2; if(n3<menor) menor=n3; medio=(n1+n2+n3)-(mayor+menor); cout<<"El mayor de los 3 numeros es: "<<mayor<<endl; cout<<"El menor de los 3 numeros es: "<<menor<<endl; cout<<"El numero del centro es: "<<medio<<endl; } 2. El dueo de una empresa desea planificar las decisiones financieras que tomara en el siguiente ao. La manera de planificarlas depende de lo siguiente: Si actualmente su capital se encuentra con saldo negativo, pedir un prstamo bancario para que su nuevo saldo sea de $10 12 000. Si su capital tiene actualmente un saldo positivo pedir un prstamo bancario para tener un nuevo saldo de $20 000, pero si su capital tiene actualmente un saldo superior a los $20 000 no pedir ningn prstamo. Posteriormente repartir su presupuesto de la siguiente manera: $5 000 para equipo de computo, $2 000 para mobiliario y el resto la mitad ser para la compra de insumos y la otra para otorgar incentivos al personal. Desplegar que cantidades se destinaran para la compra de insumos e incentivos al personal y, en caso de que fuera necesario, a cuanto ascendera la cantidad que se pedira al banco.
3. Calcular el costo del servicio de mudanza, de acuerdo a la distancia entre el punto de partida y de llegada. Para calcular el costo se debe tener en cuenta: Si la distancia por cada viaje es mayor o igual a 5 km, se cobrar S/. 7.00 por kilmetro, de lo contrario se cobrar el monto bsico que es de S/. 25.00. 4. Una fabrica paga a sus empleados de acuerdo a su condicin, de tal manera que un obrero contratado recibe al mes S/.1200.00 y un obrero estable S/.1000.00. as mismo, todos los empleados reciben un pago de gratificacin en los meses de Julio y Diciembre. Dicha gratificacin vara de acuerdo a los aos de servicios que tiene el empleado, como se muestra en el siguiente cuadro: Adems todos los empleados reciben un descuento por AFP del 9%. Calcular el sueldo de un obrero correspondiente a un mes determinado Solucin: # include <iostream.h> void main() { int as,mes,s; char cond; float sb,g,sf; cout<<"Ingresar condicion del empleado Estable[E], Contratado[C] : "; cin>>cond; cout<<"Ingresar aos de servicio: "; cin>>as; cout<<"Ingresar mes del pago: "; cin>>mes; if(cond=='E') s=1000; else if(cond=='C') s=1200; else cout<<"Vuelva a intentarlo condicion no valida"<<endl; sb=s-s*0.09; if(as>0 && as<=5) g=sb*0.60; else if(as>6 && as<=10) g=sb*0.80; else g=sb; if(mes==7 || mes==12) sf=sb+g; else sf=sb; Aos de Servicios % de Gratificacin 0 a 5 6 a 10 11 a ms 60 80 100 13 cout<<"El sueldo final del obrero del mes "<<mes<<" es: "<<sf<<endl; } 5. Una empresa se encarga de la venta y distribucin de CD. Los clientes pueden adquirir los artculos por cantidad. Los precios son: El vendedor gana por cada CD vendido S/. 1.25. Realizar un algoritmo que calcule el precio total para el cliente, el costo total y la ganancia para el vendedor. 6. Disee un algoritmo que determine la categora de un estudiante en base a su promedio, acuerdo a la siguiente tabla: Solucin: # include <iostream.h> void main() { int prom,; char cat; cout<<"Ingresar promedio del alumno: "; cin>>prom; if(prom>0 && prom<=11) cat='d'; else if(prom>=12 && prom<=13) cat='C'; else if(prom>=14 && prom<=16) cat='B'; else if(prom>=17 && prom<=20) cat='A'; else cout<<"Promedio no valido"<<endl; cout<<"El promedio del alumno es: "<<prom<<endl; cout<<"por lo tanto le corresponde la categoria: "<<cat<<endl; } 7. Disee un algoritmo que determine el promedio final de un alumno conociendo sus tres notas. El profesor del curso ha prometido incrementar en dos puntos la nota de la tercera prctica calificada si es que es mayor a 10. considere que la mxima nota final es 20. 8. Una empresa de bienes races ofrece casas de inters social, bajo las siguientes condiciones: Si los ingresos del comprador son menores de $8000, el enganche ser del 15% del costo de la casa y el resto se distribuir en pagos mensuales, a pagar en diez aos. Si los ingresos del comprador son de $8000 o mas, el enganche ser del 30% del costo de la casa y el resto se distribuir en pagos mensuales a pagar en 7 aos. La empresa quiere obtener cuanto debe pagar un comprador por concepto de enganche y cuanto por cada pago parcial Solucin: # include <iostream.h> void main() { float ic,cc,e,r,pm; cout<<"Los ingresos del comprador son: "; cin>>ic; cout<<"Ingresar el costo de la casa: "; cin>>cc; if(ic<8000) { e=cc*0.15; r=cc-e; a. S/. 3.50 si se compra hasta 9 unidades. b. S/. 3.30 si se compra entre 10 unidades y hasta 99. c. S/. 3.10 si se compra entre 100 y 499 unidades. d. S/. 2.80 para ms de 500. Promedio Categora 20 17 16 14 13 12 11 0 A B C D 14 pm=r/120; } else if(ic>=8000) { e=cc*0.30; r=cc-e; pm=r/84; } cout<<"La cuota inicial es: "<<e<<endl; cout<<"El pago mensual es: "<<pm<<endl; } 9. El gobierno del estado Peruano desea reforestar un bosque. Si la superficie del terreno excede a 1 milln de metros cuadrados, entonces decidir sembrar de la siguiente manera: Si la superficie del terreno es menor o igual a un milln de metros cuadrados, entonces decidir sembrar de la siguiente manera:
El gobierno desea saber el numero de pinos, oyameles y cedros que tendr que sembrar en el bosque, si se sabe que en 10 metros cuadrados caben 8 pinos, en 15 metros cuadrados caben 15 oyameles y en 18 metros cuadrados caben 10 cedros.
10. Una compaa de seguros ofrece a sus clientes cuatro tipos de seguro de sepelio: Tipo Max. Personas Pago mensual (S/.) A B C D 8 6 4 2 40 30 20 10 Si el cliente asegura a ms personas de la indicadas en el cuadro anterior tendr que pagar S/.8.00 mensuales por cada persona adicional si es que el seguro es de tipo A o B, y S/.5.00 mensuales por cada persona adicional si es que el seguro es de tipo C o D. Calcular el monto anual que tiene que pagar un determinado cliente.
Superficie del bosque (%) Tipo de rbol 50% 30% 20% pino oyamel cedro Superficie del bosque (%) Tipo de rbol 70% 20% 10% pino oyamel cedro 15
Universidad Juan Pablo II ESCUELA DE INGENIERIA DE SISTEMAS Gua de Laboratorio de Algoritmos N 0 6 CODIFICANDO CON ESTRUCTURAS SELECTIVAS USO DEL CONTROL switch
I. OBJETIVOS Al trmino de esta experiencia, el estudiante ser capaz de: 1. Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos. 2. Identificar los diversos errores de compilacin y corregirlos adecuadamente. 3. Plantear correctamente en cdigo C++ el control selectivo switch. 4. Usar correctamente el programa.
II. FUNDAMENTO TEORICO Para alcanzar los objetivos de esta experiencia, es necesario tener en consideracin los siguientes aspectos tericos: Estructura Selectiva (control switch) Se identifican porque estn compuestos de un selector, el cual es una variable, que ser evaluada segn el contenido que esta tenga, para lo cual es indispensable conocer los datos por anticipado que dicha variable puede almacenar, sino se conocen, el control no es aplicable. Cada posible dato que pueda almacenar esta variable selectora ser una caso (case) que llevar a una o ms acciones a realizar de cumplirse con esa alternativa. El Flag o Bandera (Bd) es una variable de comparacin que se utiliza para evitar que se visualice una salida ante un mensaje de error. Inicializa en un valor 0 (Bd 0) y ante un mensaje de error cambia de estado a 1 (Bd 1).
Por ejemplo: Cdigo trabajado con el control switch, que simula una calculadora:
#include <iostream.h> void main( ) { char op; int Bd = 0; // Declaracin del Flag o Bandera float x, y, resultado; 16 cout << "Introduzca operando1, operador y operando2: "; cin >> x >> op >> y; switch (op) { case +: resultado = x + y; break; case -: resultado = x - y; break; case *: resultado = x * y; break; case /: if (y != 0) resultado = x / y; else { cout<<Divisin irreal; Bd = 1; } break; default: cout<<"el operador no existe"<<endl; Bd = 1; } if (Bd!=1) cout<<"la "<<op<<" es: "<<resultado<<endl; }
III. EQUIPOS Y MATERIALES
Computadora personal Programa Borland C++ 5.02 instalado Cuaderno de clases, donde estn los ejercicios resueltos en pseudocdigos.
IV. PROCEDIMIENTO
a) Encender el computador. b) Crear carpeta donde guardar sus programas. c) Ingresar al Borland C++ 4.5 d) Codificar los algoritmos desarrollados en el aula. e) Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de prctica encargado para la calificacin correspondiente. f) Guardar la carpeta de sus archivos a sus memorias. g) Retirarse del laboratorio de forma ordenada.
ALGORITMOS Estructuras Selectivas (switch) Gua Prctica N 6
1. Construya un algoritmo que al ingresar un nmero entero imprima el da de la semana que le corresponde. Por ejemplo: al ingresar 1 debe imprimir lunes. Solucin: # include <iostream.h> void main() { int nd; cout<<"Ingresar numero del dia: "; cin>>nd; switch(nd) { case 1: cout<<"Lunes";break; 17 case 2: cout<<"Martes";break; case 3: cout<<"Miercoles";break; case 4: cout<<"Jueves";break; case 5: cout<<"Viernes";break; case 6: cout<<"Sabado";break; case 7: cout<<"Domingo";break; default: cout<<"Dia no valido"<<endl; } } 2. Construya una calculadora que lea 2 nmeros y un operador y efecte la operacin indicada (suma, resta, multiplicacin y divisin). 3. Construya un algoritmo que al ingresar una fecha (da, mes y ao) nos indique si la fecha ingresada es correcta o no. 4. Construir un algoritmo que al ingresar un nmero entero que indique el mes, nos muestre cuantos das tiene dicho mes. Solucin: # include <iostream.h> void main() { int mes,a,d,Bd=0; cout<<"Ingresar mes: "; cin>>mes; cout<<"Ingresar ao: "; cin>>a; switch(mes) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: d=31;break; case 4: case 6: case 9: case 11: d=30;break; case 2: if(a % 4==0) d=29; else d=28; break;
default: cout<<"Mes no valido"<<endl; Bd=1; } if(Bd==0) cout<<"El mes "<<mes<<" tiene: "<<d<<" dias"<<endl;
}
5. Un supermercado ofrece a sus clientes descuentos de acuerdo al monto de compra, como se muestra en el siguiente cuadro: 18 Compra (S/.) Descuento (%) 0 250 251 500 501 1000 1001 ms 0 5 10 15 Para recibir los beneficios de descuento un cliente solo puede comprar dentro de un determinado rubro, as mismo dependiendo del rubro de la compra, se le aplica el siguiente impuesto sobre la compra descontada. Rubro Impuesto (%) Comestibles Juguetes 15 20 Construir un algoritmo que calcule el pago total que har un determinado cliente.
6. Un banco realiza el pago de intereses a sus clientes por un deposito a plazo fijo de acuerdo a la siguiente informacin: Tipo de moneda, Tiempo de deposito y monto depositado. Los intereses sern aplicados segn el siguiente cuadro: Meses Soles (%) Dlares (%) 0 5 6 12 13 mas 0 6 9 0 4 7 Mostrar el inters y el monto total a recibir. Solucin: # include <iostream.h> void main() { int mes,Bd=0; float din,inte,total; char mon; cout<<"Ingresar dinero a ahorrar: "; cin>>din; cout<<"Ingresar tiempo de ahorro: "; cin>>mes; cout<<"Ingresar moneda soles[S],Dolares[D]: "; cin>>mon; switch(mon) { case 'S': if(mes>0 && mes<=5) inte=0; else if(mes<=12) inte=din*0.06; else inte=din*0.09;break; case 'D': if(mes>0 && mes<=5) inte=0; else if(mes<=12) inte=din*0.04; else inte=din*0.07;break; default: cout<<"Tipo de Moneda no valida"<<endl; Bd=1; } 19 total=din+inte; if(Bd==0) { cout<<"El interes ganado es: "<<inte<<endl; cout<<"El total a recibir es: "<<total<<endl; } } 7. Una tienda de venta de polos ha establecido porcentajes de descuento, indicados a continuacin, de acuerdo a las caractersticas de la prenda: Tipo de algodn (Simple, Pima), Tipo de prensa (Nio, Joven, Adulto), Detalle de la prenda (Sin estampado, Con estampado) Nio Joven Adulto Tipo de algodn S C S C S C Simple 3 5 4 6 5 7 Pima 5 3 6 4 7 5 Calcular el importe a pagar por una prenda. 8. Una empresa de carga brinda servicio a todo el continente americano, la tarifa que cobra por cada tonelada se muestra en el siguiente cuadro: Destinos ($/tonelada) Medio de transporte Norte Sur Centro Areo Martimo Terrestre 30 25 20 25 20 15 20 15 10 Asimismo, si la carga que se transporta es perecible, se le incrementa el 7% del pago total de acuerdo a las toneladas. Solucin: # include <iostream.h> void main() { int ton,Bd=0,p; float inc,pf; char mt,des,tc; cout<<"Ingresar cantidad de toneladas: "; cin>>ton; cout<<"Ingresar transporte Aereo[A],Maritimo[M], Terrestre[T]: "; cin>>mt; cout<<"Ingresar destino norte[N],sur[S], centro[C]: "; cin>>des; cout<<"Ingresar tipo de carga perecible[P]: "; cin>>tc; switch(mt){ case 'A': switch(des) { case 'N': p=ton*30;break; case 'S': p=ton*25;break; case 'C': p=ton*20;break; default: cout<<"Destino no valido"<<endl; Bd=1; };break; case 'M': switch(des) { case 'N': p=ton*25;break; case 'S': p=ton*20;break; case 'C': p=ton*15;break; default: cout<<"Destino no valido"<<endl; 20 Bd=1; };break; case 'T': switch(des) { case 'N': p=ton*20;break; case 'S': p=ton*15;break; case 'C': p=ton*10;break; default: cout<<"Destino no valido"<<endl; Bd=1; };break; default: cout<<"No existe medio de transporte"<<endl; Bd=1; }
if(tc=='P') inc=p*0.07; else inc=0; pf=p+inc; if(Bd==0) cout<<"El pago total es: "<<pf<<" soles"<<endl; } 9. Una compaa de seguros ofrece a sus clientes cuatro tipos de seguro de sepelio: Tipo Mximo nmero de Personas Pago mensual (S/.) A B C D 8 6 4 2 40 30 20 10 Si el cliente asegura a ms personas de la indicadas en el cuadro anterior tendr que pagar S/.8.00 mensuales por cada persona adicional si es que el seguro es de tipo A o B, y S/.5.00 mensuales por cada persona adicional si es que el seguro es de tipo C o D. Calcular el monto anual que tiene que pagar un determinado cliente. 10. Un centro comercial ofrece ventas financiadas por 3 tipos de tarjetas de crdito como indica a continuacin:
El cliente solo puede financiar una compra hasta el mximo de letras que se indica en el cuadro anterior, en caso contrario la venta no debe proceder. Calcular el monto de cada letra por pagar as como el monto total. 11. Una empresa area realiza ofertas de pasajes a 3 destinos diferentes, de acuerdo a la cantidad de pasajes que se compra, como se muestra en el siguiente cuadro: Destino Precio ($) Menos de 5 pasajes (%) De 5 a ms Pasajes (%) Pars Italia Grecia 184.00 139.70 127.40 10 15 20 15 20 25 Un cliente solo puede comprar pasajes para una ciudad. Calcular el total que tiene que pagar un determinado cliente. Max. Letras Tipo de Tarjeta Inters (%) 12 8 6 A B C 5 10 15 21 12. Calcular el pago de un obrero que trabaja al destajo. El pago que recibe el obrero por cada unidad producida depende de su categora y del tipo de producto que produce, como se muestra en el siguiente cuadro: Tarifa (S/. x unidad) Categora Tejas Losetas A B C 2.50 2.00 1.50 2.00 1.50 1.00 As mismo, el obrero recibe una bonificacin especial de acuerdo a la cantidad que produce: Unidades Producidas Bonificacin (%) 1 250 251 500 501 1000 1001 mas 0.00 50.00 100.00 150.00 Adems del total de ingresos se descuenta 75 por seguro. 13. En una empresa, los salarios van a aumentar en base al contrato actual del trabajador: Contrato Aumento % De 0 a 1500 soles De 1501 a 3000 soles De 3001 a 6000 soles De 6001 soles a ms 20 10 5 0 Adems el trabajador recibir una bonificacin especial de acuerdo a su condicin civil. Estado civil Bonificacin Soltero 100.00 Casado 150.00 Se pide mostrar cuanto es la bonificacin del trabajador y cual es su sueldo neto. 14. Disee un algoritmo que determine el pago a realizar, sabiendo sus montos y que los descuentos dependen de la categora, en base a la siguiente tabla: Categora Descuentos A B C D 5% 7% 10% 15%
15. Un club social a clasificado a sus socios en 3 categoras, como se muestra en el siguiente cuadro: Categoria Cant. Boletos Pago Mensual (S/.) Dscto (%) A B C 25 20 15 200 150 100 4 3 2 Dicho club realiza mensualmente un tipo de evento (rifas, almuerzos, etc.)., de esta manera, un socio esta obligado a vender la cantidad de boletos que se indican en el cuadro anterior, pero si un socio vende ms de los boletos indicados, se le descuenta S/.2.00 por cada boleto vendido. Adems si el socio tiene ms de 55 aos recibe un porcentaje de descuento de su pago mensual. Calcular el monto total que paga un socio en un mes.
22
Universidad Juan Pablo II ESCUELA DE INGENIERIA DE SISTEMAS Gua de Laboratorio de Algoritmos N 0 7 y 8 CODIFICANDO CON ESTRUCTURAS REPETITIVAS USO DEL CONTROL While, Do while y For
I. OBJETIVOS Al trmino de esta experiencia, el estudiante ser capaz de: 1. Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos. 2. Identificar los diversos errores de compilacin y corregirlos adecuadamente. 3. Plantear correctamente en cdigo C++ el control repetitivo while , Do while y For. 4. Usar correctamente el programa.
II. FUNDAMENTO TEORICO Para alcanzar los objetivos de esta experiencia, es necesario tener en consideracin los siguientes aspectos tericos: El ciclo Mientras (while) es un ciclo de preverificacin porque se hace una prueba antes de que los enunciados del ciclo se puedan ejecutar. Si la expresin de verificacin es verdadera (diferente de cero) se ejecutarn los enunciados del ciclo. Si la expresin de verificacin es falsa (cero) se ignorarn los enunciados del ciclo y se ejecutar el siguiente enunciado que sigue al ciclo. En cdigo C++ while (condicin es V) { enunciado 1; enunciado 2; .................... enunciado n; } El ciclo Do while aqu la verificacin se hace al final del ciclo, en lugar de al principio del ciclo. Esta es la diferencia principal entre Mientras (while) y Hacer mientras (do/while). Ya que do/while es un ciclo posverificador, los enunciados del ciclo siempre se ejecutarn por lo menos una vez. Para romper el ciclo, la expresin de verificacin debe convertirse en falso de este modo, si el valor de la verificacin es inicialmente verdadero, algo debe suceder dentro del ciclo para cambiar el valor a falso; de lo contrario, tendr un ciclo infinito. En cdigo C++ do { enunciado 1; 23 enunciado 2; .................. enunciado n; } while(condicin es V);
El ciclo for Al ciclo for se le llama ciclo de repeticin fija porque el ciclo se repite un nmero determinado de veces. Lo primero que se lleva a cabo antes de ejecutar los enunciados del ciclo es la inicializacin de una variable controladora del ciclo. Iniciacin significa establecer una variable a algn valor inicial. Despus se ejecuta la expresin de verificacin para verificar el valor de la variable.
En cdigo C++
for (contador = valor inicial; expresin de verificacin contador; incrementa o decrementa contador) { enunciado 1; enunciado 2; ................... enunciado n; } // Fin del for
III. EQUIPOS Y MATERIALES
Computadora personal Programa Borland C++ 4.5 instalado Cuaderno de clases, donde estn los ejercicios resueltos en pseudocdigos.
IV. PROCEDIMIENTO
a) Encender el computador. b) Crear carpeta donde guardar sus programas. c) Ingresar al Borland C++ 4.5 d) Codificar los algoritmos desarrollados en el aula. e) Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de prctica encargado para la calificacin correspondiente. f) Guardar la carpeta de sus archivos a sus memorias. g) Retirarse del laboratorio de forma ordenada.
ALGORITMOS Estructuras Repetitivas (while do while -for) Gua Prctica N 7
1. Ingresar nmeros enteros y calcular la suma de dichos nmeros. El algoritmo termina cuando se ingresa el numero cero. 2. Se quiere ingresar las calificaciones de los alumnos. Y realizar un algoritmo para calcular el promedio de las calificaciones ingresadas. El algoritmo termina cuando se ingresa una nota negativa. Solucin: # include<iostream.h> void main(){ int not,suma=0,cont=0; float prom; 24 do{ cout<<"Ingresar nota del alumno: " ; cin>>not; if(not>0){ suma=suma+not; cont=cont+1; // o tambien cont++ } }while(not>0) ; prom=suma/cont; cout<<"El promedio de notas de los "<<cont<<" alumnos es: "<<prom<<endl; } 3. En un proceso repetitivo se ingresan las edades de las personas, se desea saber cuantas personas mayores de edad hay y cuantas menores de edad. El proceso termina cuando se ingresa el cero. 4. Suponga que se tiene un conjunto de N personas. Realizar un algoritmo para calcular la talla ms alta de todo el grupo. Solucin: #include<iostream.h> void main(){ int N,cont=0; float t,mayor=0; cout<<"Ingresar cantidad de personas: "; cin>>N; while(cont<N){ cout<<"Ingresar talla: "; cin>>t; if(t>mayor) mayor=t; cont++; } cout<<"La persona mas alta mide "<<mayor<<" cm"<<endl; } 5. Una persona debe realizar un muestreo con N personas para determinar el promedio de peso de los nios, jvenes y adultos que existen en su zona habitacional. Se determinan las categoras con base en la siguiente tabla: Solucin: #include<iostream.h> void main(){ int N,i,edad,pes,suma1=0,suma2=0,suma3=0,c1=0,c2=0,c3=0; float prom1,prom2,prom3; cout<<"Ingresar cantidad de personas a evaluar: "; cin>>N; for(i=0;i<N;i++){ cout<<"Ingresar edad: "; cin>>edad; cout<<"Ingresar peso: "; cin>>pes; if(edad>0 && edad<=12){ suma1=suma1+pes; Categora Edad Nios Jvenes Adultos 0 12 13 29 30 ms 25 c1++; }else if(edad<=29){ suma2=suma2+pes; c2++; }else suma3=suma3+pes; c3++; } if(c1>0) prom1=suma1/c1; else prom1=0; if(c2>0) prom2=suma2/c2; else prom2=0; if(c3>0) prom3=suma3/c3; else prom3=0; cout<<"El peso promedio de los nios es: "<<prom1<<endl; cout<<"El peso promedio de los jovenes es: "<<prom2<<endl; cout<<"El peso promedio de los adultos es: "<<prom3<<endl; } 6. Un entrenador le ha propuesto a un atleta recorrer una ruta de 5 kilmetros durante 10 das, para determinar si es apto para la prueba de 5 Kilmetros o debe buscar otra especialidad. Para considerarlo apto debe cumplir por lo menos una de las siguientes condiciones: - Que en ninguna de las pruebas haga un tiempo mayor a 16 minutos. - Que al menos en una de las pruebas realice un tiempo mayor a 16 minutos. - Que su promedio de tiempos sea menor o igual a 15 minutos. 7. Una empresa de ventas por catalogo ofrece 4 productos distintos cuyos precios de venta al detalle son: producto A S/.12.60, producto B S/.23.50, producto C S/.27.40 y producto D S/.31.70. Escriba un algoritmo que lea el tipo de producto y la cantidad de productos vendida en un da, calcular y mostrar el monto total de todos los productos vendidos. El algoritmo termina cuando se ingresa un producto que no este a la venta. Solucin: #include<iostream.h> void main(){ char tip; int cant,Bd=0; float pago,total=0; do{ cout<<"Ingresar tipo de producto [A][B][C]o [D]: "; cin>>tip; cout<<"Ingresar cantidad que desea: "; cin>>cant; switch(tip){ case 'A': pago=cant*12.60;break; case 'B': pago=cant*23.50;break; case 'C': pago=cant*27.40;break; 26 case 'D': pago=cant*31.70;break; default: cout<<"Fin del proceso"<<endl; Bd=1; } total=total+pago;
}while(Bd==0); cout<<"La venta del dia de todos los productos es: "<<total<<" soles"<<endl; } 8. Se ha seleccionado n nmeros de personas para realizar una encuesta, en un proceso repetitivo se ingresa el grado de instruccin y la edad de cada persona. Se desea saber el promedio de edades, la mayor edad y el porcentaje de personas con instruccin Primaria, Secundaria y Superior (P, S, R). 9. Disear un algoritmo que permita calcular la suma de los primeros N trminos de la siguiente serie: 1 + 1/3 + 1/5 + 1/7 + 1/9 + Solucin: #include<iostream.h> void main(){ int N,cont=0; float suma=0,num=1,den=1; cout<<"Ingresar la cantidad de terminos a sumar: "; cin>>N; while(N>cont){ cout<<"El termino es: "<<num<<"/"<<den<<endl; suma=suma+(num/den); num=num*1; den=den+2; cont++; } cout<<"La suma de los terminos es: "<<suma<<endl; } 10. Al final de un curso se desea saber cual ha sido el alumno con la mejor nota promedio. Se sabe que este ao entraron 75 alumnos y que todos tienen 3 asignaturas. Dar el nombre y la nota media. 11. Determinar la cantidad semanal de dinero que recibir cada uno de los n obreros de una empresa. Se sabe que cuando las horas que trabajo un obrero exceden de 40, el resto se convierte en horas extras que se pagan al doble de una hora normal, cuando no exceden de 8; cuando las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se paga por una hora normal y el resto al triple. 12. Se tiene un conjunto de 10 tarjetas cada una contiene la informacin del censo para una persona: Sexo, Edad y Estado civil (a.- soltero, b. Casado, c. Viudo, d. Divorciado). Disee un pseudocdigo estructurado que lea todos estos datos, e imprima el nmero de censo de todas las jvenes solteras que estn entre 16 y 21 aos. 13. En un examen el tipo de calificacin es el siguiente: Puntaje Calificacin 100 70 A 69 30 B 29 0 C 27 Escribe un algoritmo que encuentre: a) El nmero de estudiantes que rindieron el examen. b) El nmero de estudiantes que obtuvieron A, B y C. El algoritmo termina cuando se le ingresa un puntaje negativo. 14. Una compaa de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la semana. Su poltica de pagos es que un vendedor recibe un sueldo base, y un 10% extra por comisiones de sus ventas. El gerente de su compaa desea saber cuanto dinero obtendr en la semana cada vendedor por concepto de comisiones por las tres ventas realizadas, y cuanto tomando en cuenta su sueldo base y sus comisiones. 15. Construya un algoritmo que muestre, calcule la suma total y determine cuantos nmeros mltiplos de M hay en los N primeros nmeros naturales, tal que M <= N. Ejem: Cuantos mltiplos de 7 hay en los primeros 100 nmeros naturales. 16. Hacer un algoritmo que lea N consumos de un restaurante. Si el consumo ingresado excede los 70 soles, el descuento ser de 5%. Muestre todos los pagos hechos. 17. Una empresa almacena los datos de N empleados, para esto, en un proceso repetitivo se ingresa el sexo y el salario de cada empleado. Se pide calcular: a) La cantidad de personas que ganan ms de 700 al mes. b) El promedio de salarios. c) El porcentaje de mujeres que trabajan en esa empresa d) El porcentaje de varones que trabajan en esa empresa Solucin: #include<iostream.h> void main(){ int N,i,c1=0,c2=0,c3=0; char sex; float s,suma=0,prom,porm,porf; cout<<"Ingresar cantidad de empleados: "; cin>>N; for(i=0;i<N;i++){ cout<<"Ingresar sexo [M] o [F]: "; cin>>sex; cout<<"Ingresar salario: "; cin>>s; suma=suma+s; if(s>700) c1++; if(sex=='M') c2++; else if(sex=='F') c3++;
} prom=suma/N; porm=(c2*100)/N; porf=(c3*100)/N; cout<<"Los empleados que ganan mas de S/. 700 son: "<<c1<<endl; cout<<"El promedio de salarios es: "<<prom<<" soles"<<endl; cout<<"El porcentaje de hombres es: "<<porm<<" %"<<endl; cout<<"El porcentaje de mujeres es: "<<porf<<" %"<<endl; } 28 18. Disear un algoritmo que permita calcular la suma de los primeros N trminos de la siguiente serie: 64/21 + 62/24 + 60/27 + 58/30 +
Universidad Juan Pablo II ESCUELA DE INGENIERIA DE SISTEMAS Gua de Laboratorio de Algoritmos N 0 9 y N 0 11 CODIFICANDO CON FUNCIONES USO DEL CONTROL
I. OBJETIVOS Al trmino de esta experiencia, el estudiante ser capaz de: 1. Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos. 2. Identificar los diversos errores de compilacin y corregirlos adecuadamente. 3. Plantear correctamente en cdigo C++ el control. 4. Usar correctamente el programa.
II. FUNDAMENTO TEORICO Para alcanzar los objetivos de esta experiencia, es necesario tener en consideracin los siguientes aspectos tericos: MODULO
Un mdulo representa una tarea determinada, consta de un conjunto de instrucciones que se procesan una sola vez y se referirn mediante un nombre por el que posteriormente sern llamados o invocados desde diferentes puntos del programa. Un mdulo debe tener un punto de entrada y un punto de salida y puede ser: Una funcin Un procedimiento o subrutina
FUNCIONES
Es un subprograma que proporciona un valor o resultado segn sea sus argumentos (parmetros) de entrada. Una funcin se invoca cuando se hace referencia, mediante su nombre y una lista de parmetros en cualquier instruccin donde se pueda usar una constante o variable.
Funcion_nombre (lista de parmetros) : tipo de resultado Acciones Retorno 0 Fin_funcion
Ejemplo: Un programa que calcula la suma de 2 nmeros y la imprime: 29 #include<iostream.h> int suma(int,int) ; // Declaracin de la funcin suma void main(){ int a,b,s; cout<<"Ingresar primer numero:"; cin>>a; cout<<"Ingresar segundo numero:"; cin>>b; s=suma(a,b); cout<<"La suma es: "<<s<<endl; // Llamar a la misma funcin suma } int suma(int a,int b){ int s; s=a+b; Desarrollo de la funcin suma return s; }
III. EQUIPOS Y MATERIALES
Computadora personal Programa Borland C++ 4.5 instalado Cuaderno de clases, donde estn los ejercicios resueltos en pseudocdigos.
IV. PROCEDIMIENTO
a) Encender el computador. b) Crear carpeta donde guardar sus programas. c) Ingresar al Borland C++ 4.5 d) Codificar los algoritmos desarrollados en el aula. e) Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de prctica encargado para la calificacin correspondiente. f) Guardar la carpeta de sus archivos a sus memorias. g) Retirarse del laboratorio de forma ordenada.
ALGORITMOS Funciones Gua Prctica N 09 y N 11
Desarrollar los siguientes ejercicios usando funciones:
1. Una compaa de seguros ofrece a sus clientes cuatro tipos de seguro de vida: Tipo Mximo nmero de Personas Pago mensual (S/.) A B C D 8 6 4 2 40 30 20 10 Si el cliente asegura a ms personas de la indicadas en el cuadro anterior tendr que pagar S/.8.00 mensuales por cada persona adicional si es que el seguro es de tipo A o B, y S/.5.00 30 mensuales por cada persona adicional si es que el seguro es de tipo C o D. Calcular el monto anual que tiene que pagar un determinado cliente. 2. Una papelera ha puesto en oferta la venta al por mayor (en cientos) de papel bond de acuerdo a los siguientes criterios: Para los primeros 5 cientos, se hace un descuento del 10% por cada ciento. De 6 a ms cientos, se hace un descuento del 15% por cada ciento. Disee un algoritmo que determine el importe bruto, el importe del descuento y el importe a pagar por una compra de papel bond. 3. Un hombre desea saber cuanto dinero se genera por concepto de intereses sobre la cantidad que tiene en inversin en el banco. El decidir reinvertir los intereses siempre y cuando estos excedan a $7000, y en ese caso desea saber cuanto dinero tendr finalmente en su cuenta. Solucin: #include<iostream.h> float inversion(float,float); // Declaracin de la funcin inversin void main(){ float da,ti,mf; cout<<"Ingresar dinero ahorrado en el banco:"; cin>>da; cout<<"Ingresar tasa de interes:"; cin>>ti; mf=inversion(da,ti); cout<<"El monto final de su cuenta es: "<<mf<<endl; } float inversion(float da,float ti){ float g,mf; g=da*ti; if(g>7000) mf=da+g; else mf=da; return mf; } 4. Determinar el precio de un boleto de ida y vuelta en ferrocarril, conociendo la distancia a recorrer y sabiendo que si el nmero de das de estancia es superior a 7 y la distancia superior a 800 KM. El costo del boleto tiene una reduccin del 30%. El precio por cada km. recorrido es de S/.3.20. Solucin: #include<iostream.h>
float costo_boleto(int,int); // Declaracin de la funcin costo_boleto
void main() { float cb; int dis,nd; cout<<"Ingresar distancia en Km:"; cin>>dis; cout<<"Ingresar numero de dias:"; cin>>nd; cb=costo_boleto(dis,nd); cout<<"El costo del boleto es: "<<cb<<endl; 31 } float costo_boleto(int dis,int nd){ float cp,desc,cb; cp=dis*3.20; if(dis>800 && nd>7) desc=cp*0.30; else desc=0; cb=cp-desc; return cb; } 5. Un centro comercial ofrece ventas financiadas por 3 tipos de tarjetas de crdito como indica a continuacin: Max. Letras Tipo de Tarjeta Inters (%) 12 8 6 A B C 5 10 15 El cliente solo puede financiar una compra hasta el mximo de letras que se indica en el cuadro anterior, en caso contrario la venta no debe proceder. Calcular el monto de cada letra por pagar as como el monto total. Solucin: #include<iostream.h> int evaluar_max(char); float evaluar_interes(char);
void main(){ float inte,mc,mp,pfl,ptotal; int nl,max; char tarj; cout<<"Ingresar tipo de tarjeta que posee [A],[B]o [C]: "; cin>>tarj; cout<<"Ingresar monto de compra: "; cin>>mc; cout<<"Ingresar numero de letras: "; cin>>nl; max=evaluar_max(tarj); inte=evaluar_interes(tarj);
if(nl<max && max!=0 && inte!=0){ mp=mc/nl; pfl=mp+mp*inte; ptotal=pfl*nl; cout<<"El monto de cada letra es: "<<pfl<<" soles"<<endl; cout<<"El pago total es: "<<ptotal<<" soles"<<endl; } else cout<<"La venta no procede"<<endl; }
int evaluar_max(char tarj){ int max; 32 switch(tarj){ case 'A': max=12; break; case 'B': max=8; break; case 'C': max=6; break; default: cout<<"Tipo de tarjeta no valida"<<endl; max=0; } return max; }
float evaluar_interes(char tarj){ float inte; switch(tarj){ case 'A': inte=0.05; break; case 'B': inte=0.10; break; case 'C': inte=0.15; break; default: cout<<"Tipo de tarjeta no valida"<<endl; inte=0; } return inte; }
6. Un club social ha clasificado a sus socios en 3 categoras, como se muestra en el siguiente cuadro: Categora Cant. Boletos Pago Mensual (S/.) Dscto (%) A B C 25 20 15 200 150 100 4 3 2 Dicho club realiza mensualmente un tipo de evento (rifas, almuerzos, etc.)., de esta manera, un socio esta obligado a vender la cantidad de boletos que se indican en el cuadro anterior, pero si un socio vende ms de los boletos indicados, se le descuenta S/.2.00 por cada boleto vendido a su pago mensual. Adems si el socio tiene ms de 55 aos recibe un porcentaje de descuento de su pago mensual. Calcular el descuento que tiene el socio y monto del mes. 7. Calcular el pago de un obrero que trabaja al destajo. El pago que recibe el obrero por cada unidad producida depende de su categora y del tipo de producto que produce, como se muestra en el siguiente cuadro: Tarifa (S/. x unidad) Categora Tejas Losetas A B C 2.50 2.00 1.50 2.00 1.50 1.00 As mismo, el obrero recibe una bonificacin especial de acuerdo a la cantidad que produce: Unidades Producidas Bonificacin (%) 1 250 251 500 501 1000 1001 mas 0.00 50.00 100.00 150.00 Adems del total de ingresos se descuenta 75 por seguro. 8. En una empresa, los salarios van a aumentar en base al contrato actual del trabajador: 33 Contrato Aumento % De 0 a 1500 soles De 1501 a 3000 soles De 3001 a 6000 soles De 6001 soles a ms 20 10 5 0 Adems el trabajador recibir una bonificacin especial de acuerdo a su condicin civil. Estado civil Bonificacin Soltero 100.00 Casado 150.00 Se pide mostrar cuanto es la bonificacin del trabajador y cual es su sueldo neto.
34
Universidad Juan Pablo II ESCUELA DE INGENIERIA DE SISTEMAS Gua de Laboratorio de Algoritmos N 0 12 y N 0 13 CODIFICANDO CON PROCEDIMIENTOS Y FUNCIONES USO DEL CONTROL
I. OBJETIVOS Al trmino de esta experiencia, el estudiante ser capaz de: 5. Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos. 6. Identificar los diversos errores de compilacin y corregirlos adecuadamente. 7. Plantear correctamente en cdigo C++ el control. 8. Usar correctamente el programa.
II. FUNDAMENTO TEORICO Para alcanzar los objetivos de esta experiencia, es necesario tener en consideracin los siguientes aspectos tericos: PROCEDIMIENTOS: Es un subprograma que proporciona cero, uno o varios valores en funcin de sus parmetros definidos en su formato.
Procedimiento_nombre (lista de parmetros) Acciones Fin_procedimiento
Los procedimientos realizan parte del proceso si devolver un dato en particular. Se trabaja con un modulo principal, el cual contiene las llamadas a las funciones y/o procedimientos a realizar.
PARAMETROS Son datos mediante los cuales se comunica explcitamente con la unidad de programa que llama. Los parmetros pueden ser de 2 tipos: Parmetros formales y Parmetros actuales
El paso de parmetros pueden realizarse por medio de dos mtodos: Por valor, cuando tiene un valor determinado que se pasa al correspondiente parmetro formal. Los parmetros por valor no pueden ser modificados por el subprograma. Por referencia (&), es aquel en el que se pasa la variable y no el valor, lo que permite que pueda ser modificada por el subprograma llamado. 35
Por ejemplo: Trabajando con procedimientos hacer un programa que calcule la suma de 2 nmeros.
#include <iostream.h>
void ingresos(float&,float&); void suma(float,float, float&); Declaracin de procedimientos void impresion(float);
Computadora personal Programa Borland C++ 4.5 instalado Cuaderno de clases, donde estn los ejercicios resueltos en pseudocdigos.
IV. PROCEDIMIENTO
h) Encender el computador. i) Crear carpeta donde guardar sus programas. j) Ingresar al Borland C++ 4.5 k) Codificar los algoritmos desarrollados en el aula. l) Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de prctica encargado para la calificacin correspondiente. m) Guardar la carpeta de sus archivos a sus memorias. n) Retirarse del laboratorio de forma ordenada.
ALGORITMOS Procedimientos y Funciones Gua Prctica N 12 y N 13
Desarrollar los siguientes ejercicios usando procedimientos y funciones: 36
1. Una compaa de seguros ofrece a sus clientes cuatro tipos de seguro de vida: Si el cliente asegura a ms personas de la indicadas en el cuadro anterior tendr que pagar S/.8.00 mensuales por cada persona adicional si es que el seguro es de tipo A o B, y S/.5.00 mensuales por cada persona adicional si es que el seguro es de tipo C o D. Calcular el monto anual que tiene que pagar un determinado cliente. 2. Una papelera ha puesto en oferta la venta al por mayor (en cientos) de papel bond de acuerdo a los siguientes criterios: Para los primeros 5 cientos, se hace un descuento del 10% por cada ciento. De 6 a ms cientos, se hace un descuento del 15% por cada ciento. Disee un algoritmo que determine el importe bruto, el importe del descuento y el importe a pagar por una compra de papel bond. 3. Un hombre desea saber cuanto dinero se genera por concepto de intereses sobre la cantidad que tiene en inversin en el banco. El decidir reinvertir los intereses siempre y cuando estos excedan a $7000, y en ese caso desea saber cuanto dinero tendr finalmente en su cuenta. Solucin: #include<iostream.h> void ingresar(float&,float&); // Declaracin del procedimiento ingresar void inversion(float,float,float&); // Declaracin del procedimiento inversin void imprimir(float); // Declaracin del procedimiento imprimir void main(){ float da,ti,mf; ingresar(da,ti); inversion(da,ti,mf); imprimir(mf); }
void ingresar(float&da,float&ti){ cout<<"Ingresar dinero ahorrado en el banco:"; cin>>da; cout<<"Ingresar tasa de interes:"; cin>>ti; } void inversion(float da,float ti,float &mf){ float g; g=da*ti; if(g>7000) mf=da+g; else mf=da; } void imprimir(float mf){ cout<<"El monto final de su cuenta es: "<<mf<<endl; } Tipo Mximo nmero de Personas Pago mensual (S/.) A B C D 8 6 4 2 40 30 20 10 37 4. Determinar el precio de un boleto de ida y vuelta en ferrocarril, conociendo la distancia a recorrer y sabiendo que si el nmero de das de estancia es superior a 7 y la distancia superior a 800 KM. El costo del boleto tiene una reduccin del 30%. El precio por cada km. recorrido es de S/.3.20. Solucin: #include<iostream.h> void ingresar(int&,int&); // Declaracion del procedimiento ingresar float costo_boleto(int,int); // Declaracin de la funcin costo_boleto void imprimir(float); // Declaracion del procedimiento imprimir void main() { float cb; int dis,nd; ingresar(dis,nd); cb=costo_boleto(dis,nd); imprimir(cb); } void ingresar(int&dis,int&nd){ cout<<"Ingresar distancia en Km:"; cin>>dis; cout<<"Ingresar numero de dias:"; cin>>nd; } float costo_boleto(int dis,int nd){ float cp,desc,cb; cp=dis*3.20; if(dis>800 && nd>7) desc=cp*0.30; else desc=0; cb=cp-desc; return cb; } void imprimir(float cb){ cout<<"El costo del boleto es: "<<cb<<endl; } 5. Un centro comercial ofrece ventas financiadas por 3 tipos de tarjetas de crdito como indica a continuacin: Max. Letras Tipo de Tarjeta Inters (%) 12 8 6 A B C 5 10 15 El cliente solo puede financiar una compra hasta el mximo de letras que se indica en el cuadro anterior, en caso contrario la venta no debe proceder. Calcular el monto de cada letra por pagar as como el monto total. Solucin:
void ingresar(char&tarj,float&mc,int&nl){ cout<<"Ingresar tipo de tarjeta que posee [A],[B]o [C]: "; cin>>tarj; cout<<"Ingresar monto de compra: "; cin>>mc; cout<<"Ingresar numero de letras: "; cin>>nl; }
void evaluar_max(char tarj,int&max){ switch(tarj){ case 'A': max=12; break; case 'B': max=8; break; case 'C': max=6; break; default: cout<<"Tipo de tarjeta no valida"<<endl; max=0; } }
void evaluar_interes(char tarj,float &inte){ switch(tarj){ case 'A': inte=0.05; break; case 'B': inte=0.10; break; case 'C': inte=0.15; break; default: cout<<"Tipo de tarjeta no valida"<<endl; inte=0; } } void imprimir(float mc,int max,float inte,int nl){ float mp,pfl,ptotal; if(nl<max && max!=0 && inte!=0){ mp=mc/nl; pfl=mp+mp*inte; ptotal=pfl*nl; 39 cout<<"El monto de cada letra es: "<<pfl<<" soles"<<endl; cout<<"El pago total es: "<<ptotal<<" soles"<<endl; } else cout<<"La venta no procede"<<endl; } 6. Un club social ha clasificado a sus socios en 3 categoras, como se muestra en el siguiente cuadro: Categora Cant. Boletos Pago Mensual (S/.) Dscto (%) A B C 25 20 15 200 150 100 4 3 2 Dicho club realiza mensualmente un tipo de evento (rifas, almuerzos, etc.)., de esta manera, un socio esta obligado a vender la cantidad de boletos que se indican en el cuadro anterior, pero si un socio vende ms de los boletos indicados, se le descuenta S/.2.00 por cada boleto vendido a su pago mensual. Adems si el socio tiene ms de 55 aos recibe un porcentaje de descuento de su pago mensual. Calcular el descuento que tiene el socio y monto del mes. 7. Calcular el pago de un obrero que trabaja al destajo. El pago que recibe el obrero por cada unidad producida depende de su categora y del tipo de producto que produce, como se muestra en el siguiente cuadro: As mismo, el obrero recibe una bonificacin especial de acuerdo a la cantidad que produce: Unidades Producidas Bonificacin (%) 1 250 251 500 501 1000 1001 mas 0.00 50.00 100.00 150.00 Adems del total de ingresos se descuenta 75 por seguro. Solucin: #include<iostream.h> void ingresar(char&,int&,char&); void tarifa(char,char,int,float&,int&); void bonificacion(int,float,float&); float sueldo(float,float); void imprimir(float,int);
void ingresar(char&tp,int&un,char&cat){ cout<<"Ingresar tipo de producto Teja[T],Loseta[L]:"; Tarifa (S/. x unidad) Categora Tejas Losetas A B C 2.50 2.00 1.50 2.00 1.50 1.00 40 cin>>tp; cout<<"Ingresar unidades producidas:"; cin>>un; cout<<"Ingresar categoria del obrero [A],[B],[C]:"; cin>>cat; }
void tarifa(char tp,char cat,int un,float&tar,int&Bd){ switch(tp){ case 'T':switch(cat){ case 'A':tar=un*2.50;break; case 'B':tar=un*2.00;break; case 'C':tar=un*1.50;break; default: cout<<"Categoria no valida"<<endl; Bd=1; };break; case 'L':switch(cat){ case 'A':tar=un*2.00;break; case 'B':tar=un*1.50;break; case 'C':tar=un*1.00;break; default: cout<<"Categoria no valida"<<endl; Bd=1; };break; default: cout<<"Tipo de producto no valido"<<endl; Bd=1; } }
float sueldo(float tar,float bon){ float s; s=(tar+bon)-75; return s; } void imprimir(float s,int Bd){ if(Bd==0) cout<<"El sueldo final del obrero es: "<<s<<" soles"<<endl; } 8. Disear un algoritmo que devuelva la cantidad de nmeros positivos y negativos ingresados a travs del teclado. El algoritmo termina cuando se ingresa el nmero cero. 41 Solucin:
#include<iostream.h>
void evaluar(int&,int&); void imprimir(int,int);
void main() {
int c1=0,c2=0; evaluar(c1,c2); imprimir(c1,c2); }
void evaluar(int&c1,int&c2) { int n; do { cout<<"Ingresar numero: "; cin>>n; if(n>0) c1++; else if(n<0) c2++; } while(n!=0); }
void imprimir(int c1,int c2) { cout<<"La cantidad de numeros positivos es: "<<c1<<endl; cout<<"La cantidad de numeros negativos es: "<<c2<<endl; } 9. En una empresa, los salarios van a aumentar en base al contrato actual del trabajador: Contrato Aumento % De 0 a 1500 soles De 1501 a 3000 soles De 3001 a 6000 soles De 6001 soles a ms 20 10 5 0 Adems el trabajador recibir una bonificacin especial de acuerdo a su condicin civil. Estado civil Bonificacin Soltero 100.00 Casado 150.00 Se pide mostrar cuanto es la bonificacin del trabajador y cual es su sueldo neto.
42
Universidad Juan Pablo II ESCUELA DE INGENIERIA DE SISTEMAS Gua de Laboratorio de Algoritmos N 0 14 CODIFICANDO CON ARREGLOS UNIDIMENSIONALES (VECTORES) USO DEL CONTROL
I. OBJETIVOS Al trmino de esta experiencia, el estudiante ser capaz de: 1. Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos. 2. Identificar los diversos errores de compilacin y corregirlos adecuadamente. 3. Plantear correctamente en cdigo C++ el control. 4. Usar correctamente el programa.
II. FUNDAMENTO TEORICO Para alcanzar los objetivos de esta experiencia, es necesario tener en consideracin los siguientes aspectos tericos: Un arreglo es un conjunto de elementos de igual tipo. Por ejemplo: Si decimos arreglo de enteros, nos referimos a que nuestro conjunto de datos sern solo del tipo nmeros enteros (1,2,3,.....,etc). Si decimos arreglo de caracteres, ser porque los datos que almacenaremos sern solo del tipo carcter (a, b, c, ..... , etc). Un arreglo permite almacenar y manipular los datos almacenados, por lo que podemos decir que al trabajar con un arreglo, los datos no son voltiles, como suceden con las variables, donde cabe la posibilidad de perder un valor anterior si es que se le asigna uno nuevo.
Por ejemplo: Ingresar n nmeros a un vector, y calcular el promedio.
#include <iostream.h>
void main() {
43 int n,i,suma=0,prom,a[50]; cout<<"Ingresar cantidad de valores: "; cin>>n; for(i=1;i<=n;i++) { cout<<"Ingresar numero: "; cin>>a[i]; } for(i=1;i<=n;i++) { suma=suma+a[i]; } prom=suma/n; cout<<"El promedio de los numeros ingresados es: "<<prom<<endl; }
III. EQUIPOS Y MATERIALES
Computadora personal Programa Borland C++ 4.5 instalado Cuaderno de clases, donde estn los ejercicios resueltos en pseudocdigos.
IV. PROCEDIMIENTO
a) Encender el computador. b) Crear carpeta donde guardar sus programas. c) Ingresar al Borland C++ 4.5 d) Codificar los algoritmos desarrollados en el aula. e) Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de prctica encargado para la calificacin correspondiente. f) Guardar la carpeta de sus archivos a sus memorias. g) Retirarse del laboratorio de forma ordenada.
ALGORITMOS Arreglos Unidimensionales (Vectores) Gua Prctica N 14
1. Guardar N y M nmeros enteros a dos vectores tal como A y B, luego trasladar los nmeros impares del vector A al final del vector B. 2. Ingresar n nmeros enteros a un vector, luego ingresar un numero cualquiera, se pide pasar a un nuevo vector todos los nmeros menores e iguales al numero que ingreso, en caso no exista ninguno, mostrar un mensaje correspondiente. Solucin:
#include<iostream.h> void main() { int n,i,A[40],x,j=0,B[40]; cout<<"Ingresar tamao del vector: "; cin>>n; for(i=1;i<=n;i++) { cout<<"Ingresar numero: "; cin>>A[i]; } 44 cout<<"Ingresar numero a comparar: "; cin>>x; for(i=1;i<=n;i++) { if(A[i]<=x) { j++; B[j]=A[i]; } } if(j==0) cout<<"No se encontro ningun numero menor o igual a X"<<endl; else { cout<<"Los numeros menores o iguales a X son: "<<endl; for(i=1;i<=j;i++) cout<<A[i]<<"\t"; } } 3. Guardar N y M nmeros en dos vectores tal como A y B, luego mostrar A B en un nuevo vector C. Solucin: #include<iostream.h>
4. Ingresar n nmeros enteros a un vector, calcule el promedio entero y luego reemplace el mayor numero por el promedio calculado. Solucin: #include <iostream.h> void main() { int n,i,suma=0,prom,a[50],mayor=0,pos; cout<<"Ingresar cantidad de valores: "; cin>>n; for(i=1;i<=n;i++) { cout<<"Ingresar numero: "; cin>>a[i]; } for(i=1;i<=n;i++) { suma=suma+a[i]; } prom=suma/n; for(i=1;i<=n;i++) { if(a[i]>mayor) { mayor=a[i]; pos=i; } } a[pos]=prom; cout<<"El promedio de los numeros es: "<<prom<<endl; cout<<"El vector reemplazado es: "; for(i=1;i<=n;i++) cout<<a[i]<<"\t"; } 5. Ingresar un de cuatro cifras, y colocar cada uno de sus dgitos en un vector, adems mostrar la posicin del menor digito. 6. Guardar n nmeros enteros a un vector, calcular el promedio y reemplazar todos los nmeros que ocupan las posiciones pares, por el promedio calculado. 7. En un concurso de conocimiento se almacena en un vector los nombres de N participantes y en otro vector las notas obtenidas (valores de 0 a 20), se pide mostrar el nombre del participante que obtuvo la mayor nota. Solucin: 46
for(i=1;i<=n;i++) { if(a[i]>mayor) { mayor=a[i]; posm=i; } } cout<<"El alumno con mayor nota es: "; cout<<nom[posm]; } 8. En una empresa se va incrementar los sueldos de los empleados, para esto, se guarda en un vector los nombres de los N empleados y en otro vector sus sueldos actuales, se pide calcular el nuevo sueldo, sabiendo que para aquellos que ganen ms de 2500 se le incrementara el 8%, caso contrario, se le incrementara el 10%. Solucin: #include<iostream.h> void main() { int n,i; float sueldo[40],nsueldo[40]; char*nombre[10]={" "," "," "," "," "," "," "," "," "," "}; cout<<"Ingresar cantidad de empleados: "; cin>>n; for(i=1;i<=n;i++) { cout<<"Ingresar nombre: "; cin>>nombre[i]; cout<<"Ingresar sueldo: "; cin>>sueldo[i]; }
for(i=1;i<=n;i++) { if(sueldo[i]>2500) nsueldo[i]=sueldo[i]+sueldo[i]*0.08; else nsueldo[i]=sueldo[i]+sueldo[i]*0.10; } 47 cout<<"Los empleados: "<<endl; for(i=1;i<=n;i++) cout<<nombre[i]<<"\t"; cout<<endl; cout<<"tienen un nuevo sueldo de: "<<endl; for(i=1;i<=n;i++) cout<<nsueldo[i]<<"\t"; } 9. Ingresar N y M nmeros enteros a 2 vectores tal como A y B, si el vector A tiene mas elementos que B, pasar los nmeros impares de A al final de B, caso contrario, pasar los nmeros impares de B al fina de A. 10. Ingresar n nmeros enteros a un vector, luego ingrese un numero, si el numero ingresado se encuentra dentro del vector, que muestre su posicin, caso contrario mostrar el mensaje: El numero no esta en el arreglo.
48
Universidad Juan Pablo II ESCUELA DE INGENIERIA DE SISTEMAS Gua de Laboratorio de Algoritmos N 0 15 CODIFICANDO CON ARREGLOS BIDIMENSIONALES (MATRICES) USO DEL CONTROL
I. OBJETIVOS Al trmino de esta experiencia, el estudiante ser capaz de: 5. Traducir a cdigo C++ los ejercicios resueltos en pseudocdigos. 6. Identificar los diversos errores de compilacin y corregirlos adecuadamente. 7. Plantear correctamente en cdigo C++ el control. 8. Usar correctamente el programa.
II. FUNDAMENTO TEORICO Para alcanzar los objetivos de esta experiencia, es necesario tener en consideracin los siguientes aspectos tericos: MATRICES
Una matriz se define: nombre [fila] [columna] arreglo de tipo
Ejemplo: b [3] [4] arreglo de reales
Para hacer referencia:
Ejemplo: b [2] [1] = 2.8 b [3] [2] = 24.8 Punteros o posiciones de filas Punteros o posiciones de columnas datos 49 Por ejemplo: Disear un algoritmo que sume las filas de una matriz A de filas N y columnas M y los coloque en un nuevo vector Suma. 1 2 3 Suma 1 5 8 12 25 1 A = 2 7 13 14 34 2 3 9 11 6 26 3 4 3 4 6 13 4
#include<iostream.h> void main() { int n,i,j,m,A[20][10],suma[20]; cout<<"Ingresar cantidad de filas: "; cin>>n; cout<<"Ingresar cantidad de columnas: "; cin>>m; for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { cout<<"Ingresar numero: "; cin>>A[i][j]; } }
for(i=1;i<=n;i++){ for(j=1;j<=m;j++){ suma[i]=suma[i]+A[i][j] ; } } cout<<"\n\n""Mostrando la matriz A: "<<endl; for(i=1;i<=n;i++){ for(j=1;j<=m;j++){ cout<<A[i][j]<<"\t"; cout<<endl; } } cout<<"La suma de las filas es: "; for(i=1;i<=n;i++) cout<<suma[i]<<"\t"; }
III. EQUIPOS Y MATERIALES
Computadora personal Programa Borland C++ 4.5 instalado Cuaderno de clases, donde estn los ejercicios resueltos en pseudocdigos.
IV. PROCEDIMIENTO
h) Encender el computador. i) Crear carpeta donde guardar sus programas. j) Ingresar al Borland C++ 4.5 k) Codificar los algoritmos desarrollados en el aula. l) Presentar avances y ejecucin de cada uno de los ejercicios al docente o jefe de prctica encargado para la calificacin correspondiente. m) Guardar la carpeta de sus archivos a sus memorias. n) Retirarse del laboratorio de forma ordenada. 50
ALGORITMOS Arreglos Bidimensionales Gua Prctica N 15
1. Sumar los elementos correspondientes de las columnas pares de una matriz de tamao N * M y guardarlo en un vector. 2. Construir un programa que permita guardar nmeros enteros en una matriz cuadrada de tamao N, luego pasar a un nuevo vector todos los nmeros pares. Solucin: #include<iostream.h> void main() { int n,i,j,A[20][10],q=0,B[40]; cout<<"Ingresar cantidad de filas y columnas: "; cin>>n;
3. Guardar en una matriz cuadrada N nmeros enteros, luego reemplazar sus diagonales principal y secundaria con el nmero 5. 4. Calcular el promedio de cada fila de una matriz de tamao N * M que contiene nmeros enteros. 5. Intercambiar los elementos de la diagonal principal por los elementos de la ltima fila de una matriz cuadrada. Solucin: 51 #include<iostream.h> void main() { int n,i,j,A[20][10],aux; cout<<"Ingresar cantidad de filas y columnas: "; cin>>n; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { cout<<"Ingresar numero: "; cin>>A[i][j]; } }
} 6. Ingresar nmeros enteros a una matriz cuadrada y ordenar de forma descendente los elementos de la diagonal principal. 7. En un concurso final de atletismo participan varios deportistas, los cuales realizan pruebas en 4 etapas. Ingresar los nombres de los deportistas y guardarlos en un vector, luego ingresar el tiempo que empleo cada atleta en cada una de las etapas; finalmente mostrar en un vector el promedio de tiempos de cada atleta, en otro vector la suma de tiempos de cada etapa y el nombre del atleta que menos tiempo empleo durante todo el concurso. 8. Una empresa ha convocado a un concurso de un puesto de trabajo. En dicho concurso se presentan N postulantes, cuyos nombres son guardados en un vector, as mismo, se realiza 4 pruebas cuyos puntajes obtenidos son guardados en una matriz. Calcular el puntaje de cada postulante. Finalmente mostrar el nombre del candidato y en caso existiera un empate mostrar los nombres de los candidatos que empataron. 9. Construir un programa que permita promediar todos los elementos que forman la letra L, de una matriz de tamao N x M. 10. Guardar nmeros enteros en una matriz de tamao N*M luego, devolver en un vector la fila que tiene la mayor suma. 11. Ingresar nmeros enteros a una matriz cuadrada de tamao N, luego intercambiar los elementos de la fila X por los elementos de la fila Y. X e Y deben ser ingresados. 12. Trasladar los elementos de la primera y la ultima columna de una matriz de tamao N x M a un vector, luego mostrar en forma ascendente los elementos de este vector. 52 13. Ingresar en un vector los nombres de alumnos, as mismo almacenar en una matriz 3 notas por cada alumno, calcular el promedio sabiendo que se elimina la nota ms baja y mostrar el nombre del alumno con el mayor promedio. 14. Hacer un algoritmo para mover los contenidos de las filas de una matriz una posicin hacia la derecha. El ltimo elemento de cada fila pasar a la primera posicin de la misma. Trabajar con una matriz N x M. 15. Guardar nmeros enteros en una matriz de tamao N * M, luego ordenar de forma descendente la columna que contiene el menor nmero. 16. Llenar una matriz de tamao N con nmeros enteros, luego ingresar el ndice de la fila y de la columna cuyos elementos se desea sumar y guardarlo en un vector. 17. Ingresar nmeros enteros a una matriz de tamao N x M, calcular el promedio de los nmeros pares y reemplazar el mayor nmero de cada columna por el promedio calculado. 18. Guardar nmeros enteros en una matriz cuadrada de tamao N, luego pasar a un nuevo vector todos los nmeros pares y a otro vector todos los nmeros impares. 19. Intercambiar los contenidos del menor y el mayor nmero de cada fila de una matriz de tamao N * M. 20. Construir un algoritmo que permita sumar los elementos de la primera columna con los elementos de la ltima columna, de una matriz cuadrada, luego muestre el resultado de esta suma en un vector.