1/8
PRACTICA DIRIGIDA Nº 3 Al concluir esta practica habrá reforzado mas su conocimiento en el empleo de las instrucciones if(), else if(), además conocerá la instrucción switch() que nos permite elegir una alternativa dentro de muchas. Cada uno de los problemas resueltos debe analizar, corregir y/o agregar y mostrar los resultados. Ejm. 22 #include<iostream> #include<math.h> using namespace std; int main() { float tarifa,pago,nhoras; cout<<"Ingrese tarifa por hora o fracción de hora:";cin>>tarifa; cout<<"Numero Horas de estacionamiento del vehiculo "; cin>>nhoras; if(nhoras<=2) pago=tarifa; else if(nhoras<=5) pago=tarifa+2*(nhoras-2); else pago=(tarifa+2*(nhoras-2))*0.90; cout<<"Monto recaudado es:"<<pago<<endl; } Ejm. 23 /*La comisión sobre las ventas totales de un empleado esta dado de la siguiente forma: -Si las ventas son menores que $70 no se paga por comisión -Si las ventas esta entre $70 y 500 inclusive, entonces se paga una comisión de 5% sobre las ventas. -Si las ventas son mayores que $500, entonces se paga 7.5% de las ventas mas $60. Escribir un programa que lea el monto de las ventas y luego calcule la comision a pagar */ #include<iostream> #define BONIF 60 using namespace std; //Programa principal int main() { float vta,comis,tasa;
Fundamentos de Programación
//BONIFICACION
Ing. Felix Huari Evangelista
2/8 cout<<"\nIngrese el Monto de la venta:"; cin>>vta; if (vta>0) { if(vta<70) tasa=0; else if((vta>=70) && (vta<=500)) tasa=0.05; else tasa=0.075; if(vta>500) comis=vta*tasa+BONIF; else comis=vta*tasa; cout<<"El monto de la comision es:"<<comis<<endl; } else cout<<"El monto de venta es negativo !..."<<endl; } Ejm. 24 /*Escribir un programa que solicite el ingreso de 3 notas de un alumno para luego calcular el promedio final, se sabe que para el calculo se anula la nota mas baja. Escribir un mensaje de aprobado o desaprobado en cada caso. El promedio se calcula la suma de sus 2 mejores notas entre 2 */ #include<iostream> using namespace std; //Programa principal int main() { float promf,menor=1000,n1,n2,n3; cout<<"\nIngrese las notas:"; cin>>n1>>n2>>n3; if (n1<menor) menor=n1; if(n2<menor) menor=n2; if(n3<menor) menor=n3; promf=(n1+n2+n3-menor)/2; if(promf>10.5) cout<<"El Alumno(a) aprobo con:"<<promf<<endl; else cout<<"El Alumno(a) desaprobo con:"<<promf<<endl; }
Fundamentos de Programaci贸n
Ing. Felix Huari Evangelista
3/8
Ejm. 25 /*Escribir un programa que solicite al usuario el ingreso de dos números y luego el operador de suma, resta, multiplicación, división o resto para finalmente mostrar la operación básica en cada caso */ #include<iostream> using namespace std; //Programa princiapl int main() { float a,b,rpta; int flag=1; char operador; cout<<"\nIngrese el Operador (+,-,*,/):"; cin>>operador; cout<<"\nIngrese dos numeros:"; cin>>a>>b; switch (operador) { case '+':rpta=a+b;break; case '-':rpta=a-b;break; case '*':rpta=a*b;break; case '/':rpta=a/b;break; default: flag=0; } if(flag) cout<<"El operador escogido es “<<operador<<” y la respuesta es:"<<rpta<<endl;
else cout<<"El Operador ingresado es incorrecto"; } Ejm. 26 /* Programa que calcula el muestra del rombo, pendiente de una recta, ecuación de la recta y el carácter dado el codigo ASCII */ #include<iostream> #include<math.h> using namespace std; //Programa princiapl int main() { float x1,x2,y1,y2,lado,d,D,Arombo,m; Fundamentos de Programación
Ing. Felix Huari Evangelista
4/8 unsigned int op,n; cout<<"Menu Principal\n"; cout<<"-------------\n"; cout<<"1.Area del Rombo\n"; cout<<"2.Pendiente de una recta\n"; cout<<"3.Ecuacion de la Recta\n"; cout<<"4.Muestra el Carácter dado el Ascii\n"; cout<<"5.Fin\n"; cout<<"\nDigite su opcion (1-5)=>"; cin>>op; /* Seleccionando la opcion correcta */ switch(op) { case 1:cout<<"Ingrese la longitud del lado:";cin>>lado; cout<<"Ingrese las coordenadas del primer punto opuesto:"; cin>>x1>>y1; cout<<"Ingrese las coordenadas del segundo punto opuesto:"; cin>>x2>>y2; // el area viene dado por: area=D*d/2 d=sqrt(pow((x2-x1),2)+pow((y2-y1),2)); D=sqrt(pow(lado,2)-pow((d/2),2)); D=2*D; Arombo=D*d/2; cout<<"El Area del rombo es:"<<Arombo<<endl; break; case 2: cout<<"Ingrese las coordenadas del primer punto:"; cin>>x1>>y1; cout<<"Ingrese las coordenadas del segundo punto:"; cin>>x2>>y2; m=(y2-y1)/(x2-x1); cout<<"La pendiente de la recta que pasa por (“<<x1<<”,”<<y1<<”) y (“<<x2<<”,”<<y2<<”) es:”<<m<<endl; break; case 3: cout<<"Ingrese las coordenadas del primer punto:"; cin>>x1>>y1; cout<<"Ingrese las coordenadas del segundo punto:"; cin>>x2>>y2; m=(y2-y1)/(x2-x1); cout<<"La ecuacion de la recta que pasa por (“<<x1<<”,”<<y1<<”) y (“<<x2<<”,”<<y2<<”) es Y-“<< m<<”*X-”<<y1+mx1<<endl; break; case 4:
Fundamentos de Programación
Ing. Felix Huari Evangelista
5/8 cout<<"\nMUESTRA EL CARACTER DADO EL CODIGO ASCII\n"); cout<<"\nIngrese el codigo Ascii:"; cin>>num; cout<<num<<" corresponde al carácter "<<char(num)<<endl; break; case 5: cout<<"Fin de sesion\n"; default: cout<<"La opcion elegida es incorrecta\n"; } } Ejm. 27 /* Programa que suma la dígitos de un numero de 3 cifras o muestra el numero en letras si este es menor que 10 */ #include<iostream> using namespace std; //Programa princiapl int main() { unsigned int num,n1=0,n2=0,numero; cout<<"Ingrese un numero [1-1000]:"); cin>>num; if(num>1000) cout<<"No acepto numeros mayores que 1000..?"; else if(num<10) { cout<<"Ingreso el “<<num<<” y en letras es "; switch(num) { case 1:cout<<"Uno\n";break; case 2:cout<<"Dos\n";break; case 3:cout<<"Tres\n";break; case 4:cout<<"Cuatro\n";break; case 5:cout<<"Cinco\n";break; case 6:cout<<"Seis\n";break; case 7:cout<<"Siete\n";break; case 8:cout<<"Ocho\n";break; case 9:cout<<"Nueve\n"; } } else { numero=num; n1=num%10; num=num/10;
Fundamentos de Programación
Ing. Felix Huari Evangelista
6/8 n2=num%10; num=num/10; cout<<"El numero ingresado es “<<numero <<” y la suma de sus dígitos es:"<<n1+n2+num<<endl; } }
Fundamentos de Programación
Ing. Felix Huari Evangelista
7/8
PROBLEMAS PROPUESTOS 1. Dado 2 vértices de un triangulo equilátero, escribir un programa que permita calcular la coordenada del tercer vértice. 2. Escribir un programa que permita leer 4 puntos correspondientes a un cuadrilátero para luego demostrar que forman un cuadrado en cuyo caso indicar cuanto vale el lado y el área correspondiente. De no ser así, emita un mensaje de que no forman un cuadrado. 3. Escribir un programa que permite leer el lado de un rombo y las coordenadas de los dos vértices opuestos para luego calcular el área del rombo. 4. Escribir un programa que permita determinar si dos rectas son paralelas o perpendiculares sabiendo que se ingresa como datos las coordenadas de 2 puntos por cada recta. En cada caso emitir el mensaje adecuado. 5. Se tiene 2 puntos que pertenecen a una recta y un tercer punto que no pertenece a la recta, escribir un programa que permita hallar la distancia de este ultimo a la recta. 6. Escribir un programa que permite determinar el ángulo que forma 2 rectas, además indicar si dicho ángulo es obtuso o agudo, en cada caso emitir un mensaje adecuado. Para ello debe ingresar como datos 2 puntos por cada recta. 7. Un distribuidor de material eléctrico vende alambres en rollos de 500, 300 y 75 pies. Elabore el programa que solicite al usuario la longitud total de alambre en pies que se requiere, y envíe como resultado el número de rollos de alambre de 500, 300 y 75 pies y el número de pies de alambre que sobra o falta para completar un rollo. La longitud total del alambre debe ser positivo, de no ser así, emita un mensaje y termina el programa. 8. Escribir un programa que acepte como ingreso dos fechas en formato dia, mes y año, en base a este determinar cual de las fecha es mas reciente. 9. Dado 4 números enteros, donde los 2 primeros pares corresponden al primer numero fraccionario y el segundo par al segundo numero. Se pide escribir un programa que muestra los 2 números y además la suma. Ejemplo (8/5 + 1 /6 = 53/30). Si el denominador de alguna de las fracciones es 0, mostrar el mensaje de “Error en entrada de datos”. 10. Los trabajadores de la empresa Topy Top laboran 3 turnos rotativos, se desea determinar el sueldo semanal total que percibe un trabajador, para ello se cuenta con los siguientes datos: numero de horas trabajadas, tarifa normal por hora trabajada (deben ser positivos) y el turno en que labora (1. mañana 7:00 am-3:00 p.m, 2. tarde 3:00 p.m. – 11:00 p.m., 3. nocturno 11:00 p.m. – 7.00 a.m.). A los trabajadores que laboran en los 2 últimos turnos tienen una tarifa especial por hora trabajada como sigue. Turno tarde un 2.5% mas que la tarifa normal, mientras que el turno nocturno un 4.5% mas que la tarifa normal. El trabajador que labora en el turno tarde tiene un incentivo extra de S/.20.00, en cambio el que labora en el ultimo turno el incentivo es de S/. 75.00. Elabore un diagrama de flujo.
Fundamentos de Programación
Ing. Felix Huari Evangelista
8/8 11. Escribir un programa que permita el ingreso de un numero entero positivo a lo mas de 2 dígitos, para luego escribir dicho numero en numeración romana. 12. Escribir un programa que permita el ingreso de un numero entero positivo mayor que 10 y menor que 1000, para luego escribir la suma de los dígitos que conforma dicho numero. 13. Escribir un programa que permita el ingreso del numero de mes para luego mostrar la estación a la que pertenece. Suponga que cada tres meses completos hay cambio de estación. 14. Elabore el programa para determinar el dígito mayor de un número entero positivo menor o igual que 1000. 15. Escribir un programa que permita el ingreso de una fecha en el formato dd/mm/aaaa, para luego escribir la fecha del día siguiente, por ejemplo si fecha actual es 28/05/2001, la fecha del día siguiente es 29/05/2001. Debe contemplar si el año es bisiesto o no. 16. Se tiene el precio de lista y precio de venta de un determinado producto, donde este ultimo puede ser mayor que el primero o menor. Si es mayor quiere decir que hemos vendido por encima del precio de lista sugerido, en cuyo caso se adicionara 1% a la tasa de comisión calculada, si es menor quiere decir que hemos hecho el descuento. Se pide escribir un programa que permita calcular la tasa de comisión que debe corresponder de acuerdo a la siguiente tabla: Dscto(%) tasa comisión(%) 25-30 1% 20-25 2% 15-20 4.5% 10-15 6% 1-10 7.5% 0 10%
Fundamentos de Programación
Ing. Felix Huari Evangelista