viernes, 18 de marzo de 2011

PRACTICA # 7

Problema 1
Cierta compañía de seguros ha reunido datos concernientes a todos los accidentes de transito ocurridos en el ultimo año. Para cada conductor involucrado en un accidente se debe contener las siguientes datos: año de nacimiento, sexo(M, F), código de registro. Diseñe un programa para leer un conjunto de datos e imprimir los siguientes valores de los conductores que ha estado en accidentes
A)porcentaje de conductores de menores de 25 años
b)porcentaje de conductores femeninos
c)porcentaje de cionductores masculinos de entre 18 y 25 años

Pseudocodigo.

a1, codigo, contador=0, anio, condm25=0, conductoresf=0, conductoresm=0 entero
c25, cm, cf real
char sexo, otro
do
{{{
print "Año de nacimiento del conductor: "
read a1
contador=contador+1
 do
 {{
 print "Sexo del conductor, F(femenino) o M(masculino): "
 read sexo
 if(sexo=='M'||sexo=='m'||sexo=='F'||sexo=='f')
    {
 print "Codigo de registro: "
 read codigo
    }
 }}
 while(sexo!='m' && sexo!='M' && sexo!='f' && sexo!='F')
 anio=2011-a1
 if(anio<25)
    {
    condm25=condm25+1
    }
    if(sexo=='m' || sexo=='M')
    {{
      if(anio>=18 && anio<=25)
      {
      conductoresm=conductoresm+1
      }
    }}
      else
    {{
      conductoresf=conductoresf+1
    }}
    print "Registrar otro? s/n: "
    read otro
   }}}
   while(otro=='s' || otro=='S')
   c25=(condm25*100)/(contador)
   cm=(conductoresm*100)/(contador)
   cf=(conductoresf*100)/(contador)
   print "Porcentaje de conductores <25 años: " c25
   print "Porcentaje de conductores Femeninos: "cf
   print "Porcentaje de conductores masculinos entre 18 y 25 años: "cm
 Fin


Codigo en C++.

#include<iostream.h>
#include<conio.h>
void main()
{
int a1, codigo, contador=0, anio, condm25=0, conductoresf=0, conductoresm=0;
float c25, cm, cf;
char sexo, otro;
do
{{{
cout<<"Año de nacimiento del conductor: ";
cin>>a1;
contador=contador+1;
 do
 {{
 cout<<"Sexo del conductor, F(femenino) o M(masculino): ";
 cin>>sexo;
 if(sexo=='M'||sexo=='m'||sexo=='F'||sexo=='f')
    {
 cout<<"Codigo de registro: ";
 cin>>codigo;
    }
 }}
 while(sexo!='m' && sexo!='M' && sexo!='f' && sexo!='F');
 anio=2011-a1;
 if(anio<25)
    {
    condm25=condm25+1;
    }
    if(sexo=='m' || sexo=='M')
    {{
      if(anio>=18 && anio<=25)
      {
      conductoresm=conductoresm+1;
      }
    }}
      else
    {{
      conductoresf=conductoresf+1;
    }}
    cout<<"Registrar otro? s/n: ";
    cin>>otro;
   }}}
   while(otro=='s' || otro=='S');
   c25=(condm25*100)/(contador);
   cm=(conductoresm*100)/(contador);
   cf=(conductoresf*100)/(contador);
   cout<<"Porcentaje de conductores <25 años: "<<c25<<endl;
   cout<<"Porcentaje de conductores Femeninos: "<<cf<<endl;
   cout<<"Porcentaje de conductores masculinos entre 18 y 25 años: "<<cm<<endl;
   getch();
}


Programa.




----------------------------------------------------------------------------------------------------------

Problema # 2


De la función f(x)=x2-y2/x2+y2 tabular los valores para x=2 4 6 8 y y=6 9 12 15 18 21

b) diseñe un programa que calcule el número de puntos con coordenadas de valores enteros que están contenidos en la siguiente elipse:

x2/16 +y2/25 en el intervalo de coordenadas que está limitado por el eje mayor y menor de la elipse -4<x>4 -5<y>5


Pseudocodigo.


x, y, x2, y2 enteros
f, y1, x1 reales
print "X Y"
for(x=2; x<=8; x=x+2)
 {
 for(y=6; y<=21; y=y+3)
  {
  f=(pow(x,2)-pow(y,2))/(pow(x,2)+pow(y,2));
  print x " "f
  }}
print "Coordenadas enteras en X y Y del elipse "
print "X  Y "
print "0  -5"
for(y=-4; y<=4; y++)
 {
 x1=sqrt(16-(0.64)*pow(y,2))
 x2=x1*10
 if(x2%10==0)
 {
 print x1"  "y
 }}
 print "0  5"
 print "-4  0"
 for(x=-3; x<=4; x=x+1)
 {
 y1=sqrt(25-(1.5625)*pow(x,2))
 y2=y1*10
 if(y2%10==0)
 {
 print x"  "y1
 }}
 Fin

Codigo en C++.


#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
int x, y, x2, y2;
float f, y1, x1;
cout<<"X Y"<<endl<<endl;
for(x=2; x<=8; x=x+2)
 {
 for(y=6; y<=21; y=y+3)
  {
  f=(pow(x,2)-pow(y,2))/(pow(x,2)+pow(y,2));
  cout<<x<<" "<<f<<endl;
  }}
cout<<endl;
cout<<"Coordenadas enteras en X y Y del elipse "<<endl<<endl;
cout<<"X  Y "<<endl<<endl;
cout<<"0  -5"<<endl;
for(y=-4; y<=4; y++)
 {
 x1=sqrt(16-(0.64)*pow(y,2));
 x2=x1*10;
 if(x2%10==0)
 {
 cout<<x1<<"  "<<y<<endl;
 }}
 cout<<"0  5"<<endl;
 cout<<endl;
 cout<<"-4  0"<<endl;
 for(x=-3; x<=4; x=x+1)
 {
 y1=sqrt(25-(1.5625)*pow(x,2));
 y2=y1*10;
 if(y2%10==0)
 {
 cout<<x<<"  "<<y1<<endl;
 }}
 getch();
}


Programa.






------------------------------------------------------------------------------------------------------------

Problema # 3


Una compañía utiliza aviones para fumigar las cosechas contra una gran variedad de plagas. La cantidad que la compañía carga a los granjeros depende de que es lo que desea fumigar y de cuantos acres desea que se fumigue, de acuerdo a la siguiente distribución

tipo1, Fumigación contra malas hiervas 1usdxacre

tipo2, Contra langostas 2usdxacre

Tipo 3, Contra gusanos 3usdxacre

Tipo 4, Contra todo lo anterior 5usdxacre

Si el área a fumigar es mayor a 1000 acres, el granjero goza de un 5% de descuento. Además cualquier granjero que haya sobrepasado los 1500usd se hace acreedor a un 10% de descuento sobre la cantidad que excede los 1500. Si se aplican ambos descuentos, el correspondiente a la suma se considera primero.

Diseñe un programa que lea un conjunto de datos que contengan la siguiente información: nombre del granjero, tipo de fumigación solicitada y el número de acres a fumigar. Debe calcularse el costo del trabajo e imprimir el nombre del granjero seguido de su cuenta


Pseudocodigo.

caracter nombre[10]
caracter otro
tipo entero
num, descuento1, descuento2, costo real
do
{{
descuento1=0
descuento2=0
print "Nombre del granjero: "
read nombre
do
 {{
print "Tipos de fumigacion: "
print "1) Fumigacion contra malas hierbas, costo 1 doll por acre"
print "2) Fumigacion contra langostas, costo 2 doll por acre"
print "3) Fumigacion contra los gusanos, costo 3 doll por acre"
print "4) Fumigacion contra todo lo anterior, costo 5 doll por acre"
print "Seleccione Tipo: "
read tipo
print "Numero de acres: "
read num
switch(tipo)
  {
  case 1: costo=num*1;
  break;
  case 2: costo=num*2;
  break;
  case 3: costo=num*3;
  break;
  case 4: costo=num*5;
  break;
  default:  print "Tipo de fumigacion incorrecta intente de nuevo."
  }
 }}
while(tipo<1 || tipo>4);
 if(num>100)
 {
 descuento1=(costo*0.05);
 }
 if(costo>1500)
 {
 descuento2=(costo-1500)*0.10;
 }
 print "Nombre del granjero: "nombre
 print "Descuento 1: "descuento1
 print "Descuento 2: "descuento2
 costo=costo-descuento1-descuento2;
 print "Total: "costo
 print "Otro? s/n ";
 read otro
 }}
 while(otro=='s'||otro=='S');
 print "Gracias por su preferencia vuelva pronto "
Fin.


Codigo en C++.


#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
char nombre[10];
char otro;
int tipo;
float num, descuento1, descuento2, costo;
do
{{
descuento1=0;
descuento2=0;
cout<<"Nombre del granjero: ";
cin>>nombre;
do
 {{
cout<<"Tipos de fumigacion: "<<endl;
cout<<"1) Fumigacion contra malas hierbas, costo 1 doll por acre"<<endl;
cout<<"2) Fumigacion contra langostas, costo 2 doll por acre"<<endl;
cout<<"3) Fumigacion contra los gusanos, costo 3 doll por acre"<<endl;
cout<<"4) Fumigacion contra todo lo anterior, costo 5 doll por acre"<<endl;
cout<<"Seleccione Tipo: ";
cin>>tipo;
cout<<"Numero de acres: ";
cin>>num;
switch(tipo)
  {
  case 1: costo=num*1;
  break;
  case 2: costo=num*2;
  break;
  case 3: costo=num*3;
  break;
  case 4: costo=num*5;
  break;
  default:cout<<"Tipo de fumigacion incorrecta intente de nuevo."<<endl<<endl;
  }
 }}
while(tipo<1 || tipo>4);
 if(num>100)
 {
 descuento1=(costo*0.05);
 }
 if(costo>1500)
 {
 descuento2=(costo-1500)*0.10;
 }
 cout<<"Nombre del granjero: "<<nombre<<endl;
 cout<<"Descuento 1: "<<descuento1<<endl;
 cout<<"Descuento 2: "<<descuento2<<endl;
 costo=costo-descuento1-descuento2;
 cout<<"Total: "<<costo<<endl;
 cout<<"Otro? s/n ";
 cin>>otro;
 }}
 while(otro=='s'||otro=='S');
 cout<<"Gracias por su preferencia vuelva pronto ";
 getch();
 }

Programa.





----------------------------------------------------------------------------------------------------------

Problema # 4.


Los reglamentos de pesca de cierta ciudad imponen un límite diario de pesca a la cantidad total. Supóngase que se desea llevar una computadora a la siguiente salida de pesca y se nascería un programa que indique cuando se ha excedido el límite. Diseñe un programa que lea el límite en kg y enseguida lea los valores de la pesca uno tras otro (corresponderán a los peces individuales) e imprimía un mensaje en el momento que se ha excedido el limite un peso de 0 significa el fin de los datos y después de que cada pescado hay sido registrado deberá mostrar el peso total.


Pseudocodigo.

limite entero
total_pesca, peso reales
print "Limite de peso al dia: "
read limite
total_pesca=0
while(total_pesca<limite && peso!=0)
 {
 print "Peso presa: "
 read peso
 total_pesca=total_pesca+peso
 if(total_pesca>=limite)
  {
  print "Exedio limite "
  }
  print "Total de la pesca: "total_pesca
 Fin.


Codigo en C++.

#include<iostream.h>
#include<conio.h>
void main()
{
int limite;
float total_pesca, peso;
cout<<"Limite de peso al dia: ";
cin>>limite;
total_pesca=0;
while(total_pesca<limite && peso!=0)
 {
 cout<<"Peso presa: ";
 cin>>peso;
 total_pesca=total_pesca+peso;
 if(total_pesca>=limite)
  {
  cout<<"Exedio limite ";
  }
  cout<<"Total de la pesca: "<<total_pesca<<endl;
 }
 getch();
 }


Programa.






-----------------------------------------------------------------------------------------------------------


Problema # 5.

Se utiliza una computadora para preparar el estado de cuenta de sus clientes. Para cada cliente se dispone un grupo de datos que contiene la siguiente información correspondiente a los depósitos y retiros que corresponden al mes en curso. Los datos son el nombre del cliente. E l tipo de operación y la cantidad respectiva.los reitrosse anotaran con cantidades negativas. Un ejemplo típico de entrada es el siguiente
Nombre cliente dirección saldo del mes anterior
Diseñe un programa para producir el estado e cuenta de cada cliente: b)considere un descuento de 25 por retiro y el interes de 1% si el total excede 1000

Pseudocodigo.

 opcion entero
 saldo, total, total_dep, total_ret, dep, ret reales
caracter nombre[10]
caracter dir[10], op
do
 {
 total=0
 total_dep=0
 total_ret=0
 print "Nombre del cliente: "
 read nombre
 print "Direccion: "
 read dir
 print "Saldo mes anterior: "
 read saldo
 do
 {
 print "Tipo de operacion "
 print "1) Deposito"
 print "2) Retiro"
 print "Tipo: "
 read opcion
 switch(opcion)
   {
  case 1: print "Deposito: ";
  read dep
  print "Deposito: "dep
  total_dep=total_dep+dep
  break;
  case 2: print "Retiro: "
  cin>>ret;
  print ""Retiro: -"ret
  total_ret=total_ret+ret;
  break;
  default: print "Error en opcion"
   }
  print "Otra operacion? s/n: "
  read op
 }
 while(op=='s'||op=='S');
 print "Banco Accion en efectivo"
 print "Direccion Canada"
 print "Nombre del cliente: "nombre
 print "Tipo 1 Deposito: "total_dep
 print "Tipo 2 Retiro: -"total_ret
 total=total_dep-total_ret+saldo;
 print "Saldo mes anterior: "saldo
 print "Total: "total
 print "Otro Cliente? s/n "
 read op
}
 while(op=='s'||op=='S');
 
Codigo en C++.


#include<iostream.h>
#include<conio.h>
void main()
{
int opcion;
float saldo, total, total_dep, total_ret, dep, ret;
char nombre[10];
char dir[10], op;
do
 {
 total=0;
 total_dep=0;
 total_ret=0;
 cout<<"Nombre del cliente: ";
 cin>>nombre;
 cout<<endl;
 cout<<"Direccion: ";
 cin>>dir;
 cout<<endl;
 cout<<"Saldo mes anterior: ";
 cin>>saldo;
 cout<<endl;
 do
 {
 cout<<"Tipo de operacion "<<endl;
 cout<<"1) Deposito"<<endl;
 cout<<"2) Retiro"<<endl;
 cout<<"Tipo: ";
 cin>>opcion;
 switch(opcion)
   {
  case 1: cout<<"Deposito: ";
  cin>>dep;
  cout<<"Deposito: "<<dep<<endl;
  total_dep=total_dep+dep;
  break;
  case 2: cout<<"Retiro: ";
  cin>>ret;
  cout<<"Retiro: -"<<ret<<endl;
  total_ret=total_ret+ret;
  break;
  default:cout<<"Error en opcion";
   }
  cout<<"Otra operacion? s/n: ";
  cin>>op;
 }
 while(op=='s'||op=='S');
 cout<<"Banco Accion en efectivo"<<endl;
 cout<<"Direccion Canada"<<endl;
 cout<<"Nombre del cliente: "<<nombre<<endl;
 cout<<"Tipo 1 Deposito: "<<total_dep<<endl;
 cout<<"Tipo 2 Retiro: -"<<total_ret<<endl;
 total=total_dep-total_ret+saldo;
 cout<<"Saldo mes anterior: "<<saldo<<endl;
 cout<<"Total: "<<total<<endl;
 cout<<"Otro Cliente? s/n ";
 cin>>op;
}
 while(op=='s'||op=='S');
 
 getch();
 }

inciso B.


#include<iostream.h>
#include<conio.h>
void main()
{
int opcion;
float saldo, total, total_dep, total_ret, dep, ret;
char nombre[10];
char dir[10], op;
do
 {
 total=0;
 total_dep=0;
 total_ret=0;
 cout<<"Nombre del cliente: ";
 cin>>nombre;
 cout<<endl;
 cout<<"Direccion: ";
 cin>>dir;
 cout<<endl;
 cout<<"Saldo mes anterior: ";
 cin>>saldo;
 cout<<endl;
 do
 {
 cout<<"Tipo de operacion "<<endl;
 cout<<"1) Deposito"<<endl;
 cout<<"2) Retiro"<<endl;
 cout<<"Tipo: ";
 cin>>opcion;
 switch(opcion)
   {
  case 1: cout<<"Deposito: ";
  cin>>dep;
  cout<<"Deposito: "<<dep<<endl;
  total_dep=total_dep+dep;
  break;
  case 2: cout<<"Retiro: ";
  cin>>ret-25;
  cout<<"Retiro: -"<<ret<<endl;
  total_ret=total_ret+ret;
  break;
  default:cout<<"Error en opcion";
   }
  cout<<"Otra operacion? s/n: ";
  cin>>op;
 }
 while(op=='s'||op=='S');
 cout<<"Banco Accion en efectivo"<<endl;
 cout<<"Direccion Canada"<<endl;
 cout<<"Nombre del cliente: "<<nombre<<endl;
 cout<<"Tipo 1 Deposito: "<<total_dep<<endl;
 cout<<"Tipo 2 Retiro: -"<<total_ret<<endl;
 total=total_dep-total_ret+saldo;
 cout<<"Saldo mes anterior: "<<saldo<<endl;
 cout<<"Total: "<<total<<endl;
 cout<<"Otro Cliente? s/n ";
 cin>>op;
}
 while(op=='s'||op=='S');
 
 getch();
 }


Programa.




----------------------------------------------------------------------------------------------------------

Problema # 6.

ESCRIBA UN PROGRAM QUE CALCULE Y DESPLIEGUE LOS VALORES PARA Y CUANDO Y=X*Z/X-Z. el programa deberá calcular y para los valores de x en el rango de 1 a 5 y los de z entre 2 y 6 .la variable x debe controlar el ciclo y los incrementos para ambos son de 1. Asimismo el programa debe mostrar el mensaje función indefinida cuando z y x sean iguales.

Pseudocodigo.

 y real
x, z entero
print "X Y Z"
for(x=1; x<=5; x++)
 {
 for(z=2; z<=6; z++)
  {
  if(z!=x)
   {
   y=(x*z)/(x-z)
   print x" "z" "y
   }
   else
   {
   print "   Y indefinida"
   }
 } }
Fin.

Codigo C++


#include<iostream.h>
#include<conio.h>
void main()
{
float y;
int x, z;
cout<<"X Y Z"<<endl<<endl;
for(x=1; x<=5; x++)
 {
 for(z=2; z<=6; z++)
  {
  if(z!=x)
   {
   y=(x*z)/(x-z);
   cout<<x<<" "<<z<<" "<<y<<endl;
   }
   else
   {
   cout<<"   Y indefinida"<<endl<<endl;
   }
 } }
 getch();
 }



Programa.










-------------------------------------------------------------------------------------------------------------

Problema # 7.

Las coordenadas x y y como función del tiempo de un proyectil disparado a una velocidad y un ángulo Φ con respecto a la tierra están dados por x=vtcosΦ yy=vtsinΦ utilizando esta información escriba un programa que despliegue una tabla de valores de xy para un proyectil disparado de 500ps a un ángulo de 22.8(recuerde hacer la conversión en radianes )
La tabla deberá contener valores que correspondan a un intervalo de 0 a 19 segundos en incrementos de medio segundo

Pseudocodigo.

x, t, y real
print "Tiempo en segundos   Coordenadas. "
for(t=0; t<=10; t=t+0.5)
 {
 x=500*t*(cos(0.397936))   //Radianes
 y=500*t*sin((22.8*3.1416)/180)
 print t"   " "("x", "y" "")"
 }
Fin


Codigo C++


#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
float x, t, y;
cout<<"Tiempo en segundos   Coordenadas. "<<endl<<endl;
for(t=0; t<=10; t=t+0.5)
 {
 x=500*t*(cos(0.397936));   //Radianes
 y=500*t*sin((22.8*3.1416)/180);
 cout<<t<<"   "<<"("<<x<<", "<<y<<" "<<")"<<endl;
 }
 getch();
}


Programa.






------------------------------------------------------------------------------------------------------------

Problema # 8.


Los lenguajes de ensamble, para algunos microprocesadores no tienen operaciones de multiplicación. Aunque en estos casos existen algoritmos sofisticados para efectuar las multiplicaciones , un método sencillo consiste en multiplicar mediante una suma repetitiva , en este caso , la eficiencia del algoritmo se puede incrementas en gasa anidadas, por ejemplo para multiplicar un numero por 12, primero se suma el numero 3 veces y entonces suma el resultado cuatro veces . escriba un programa que multiplique 33,47 y 83 * 1001 utiliznado un ciclo de tres gasas y luego despliegue el resultado

Pseudocodigo.

n1, n2, n3, r1=0, r2=0, r3=0, rr1=0, rr2=0, rr3=0, rrr1=0, rrr2=0, rrr3=0 entero
print "Resultados: "
print "(33)(1001) (47)(1001) (83)(1001)"
for(n1=1; n1<=7; n1++)
 {
 r1=r1+33;
 r2=r2+47;
 r3=r3+83;
 }
 for(n2=1; n2<=11; n2++)
 {
 rr1=rr1+r1;
 rr2=rr2+r2;
 rr3=rr3+r3;
 }
 for(n3=1; n3<=13; n3++)
 {
 rrr1=rrr1+rr1;
 rrr2=rrr2+rr2;
 rrr3=rrr3+rr3;
 }
print rrr1"  "rrr2"  "rrr3


Codigo C++.


#include<iostream.h>
#include<conio.h>
void main()
{
int n1, n2, n3, r1=0, r2=0, r3=0, rr1=0, rr2=0, rr3=0, rrr1=0, rrr2=0, rrr3=0;
cout<<"Resultados: "<<endl;
cout<<"(33)(1001) (47)(1001) (83)(1001)"<<endl<<endl;
for(n1=1; n1<=7; n1++)
 {
 r1=r1+33;
 r2=r2+47;
 r3=r3+83;
 }
 for(n2=1; n2<=11; n2++)
 {
 rr1=rr1+r1;
 rr2=rr2+r2;
 rr3=rr3+r3;
 }
 for(n3=1; n3<=13; n3++)
 {
 rrr1=rrr1+rr1;
 rrr2=rrr2+rr2;
 rrr3=rrr3+rr3;
 }
cout<<rrr1<<"  "<<rrr2<<"  "<<rrr3<<endl;
getch();
}


Programa.




-------------------------------------------------------------------------------------------------------------

No hay comentarios:

Publicar un comentario