lunes, 7 de mayo de 2012

practica 11. (problemas)

problema 1.
escribir un programa para escribir 10 numeros enteros en un arreglo llamado emax y encuentre el maximo valor introducido. siga el rastro del del maximo elemento del arreglo y del numero del indice para el maximo. Despues de desplegar los dos numeros, imprima estos dos menajes:

el valor maximo es:
Este es el elemento numero____en la lista de los numeros.
haga que el programa despliegue los valores correctos en el lugar del subrayado en los mensajes.

b)Haga que el programa localice el menor de los datos introducidos.



P-seudo codigo.

1.- Inicio
void introducedatos(int A[10])
{int i=0
for(i=0 to i<=9 step i++)
{Print "Dato " ,(i+1), "= "
Read A[i]}
Print endl}

int encuentramayor(int A[10])
{int i=0, mayor=A[0],pos=0
for(i=0 to i<=9 step i++)
{if (A[i]>mayor)
{pos=i
mayor=A[i]}}
return pos}

int encuentramenor(int A[10])
{int i=0,menor=A[0],pos=0
for(i=1 to i<=9 step i++)
{if (A[i]<menor)
{pos=i
menor=A[i]}}
return pos}

void desplegardatos(int A[10])
{
int i=0
Print "Lista de numeros"
for(i=0 to i<=9 step i++)
{ Print "\t" ,A[i]}
}

void desplegarmsjs(int pos1, int pos2, int A[10])
{ Print endl
Print "El valor maximo es: " ,A[pos1]
Print "Este es el elemento numero " ,(pos1+1), " en la lista de numeros"
Print "El valor minimo es: " ,A[pos2]
Print "Este es el elemento numero " ,(pos2+1), " en la lista de numeros"}

1.- Inicio de programa
void main()
{int emax[10],pos1=0,pos2=0
introducedatos(emax)
pos1=encuentramayor(emax)
pos2=encuentramenor(emax)
desplegardatos(emax)
desplegarmsjs(pos1,pos2,emax)
fin.

problema 2.
Escriba un programa para introducir los siguientes numeros enteros e un arreglo llamado calificaciones: 89, 95, 72, 83, 99, 54, 86, 75, 92, 73, 79, 75, 82, 77, 70. Realice un programa con as siguientes funciones:
void introducirvalores (int calf[15]), int sumavalores (int calf[15]), int promedio (int calf[15]), int desviacion (int calf[15], int desv[15]), int variancia (int desv[15]), void desplegar (int calf[15], int desv[15]).



P-seudo codigo.
1.- Inicio
void valores(int calif[15])
{int T
Print "Introduce calificaciones"
for(T=0 to T<=14 step T++)
{Print "Calificacion " ,(T+1), "= "
Read calif[T]}
Print endl}

int sumvalores(int calif[15])
{int sum=0, T=0
for(T=0 to T<=14 step T++)
{sum=sum+calif[T]}
return sum}

int prom(int calif[15])
{int resultado=0
resultado=sumvalores(calif)
return resultado/15}

void desviacion(int calif[15],int desv[15])
{int promedio=0, T=0
promedio=prom(calif)
for(T=0 to T<=14 step T++)
{desv[T]=calif[T]-promedio}}

int variacion(int desv[15])
{int suma=0,T=0
for(T=0 to T<=14 step T++)
{suma=suma+pow(desv[T],2)}
return suma/15}

void desplegar(int calif[15], int desv[15])
{int T=0
Print "No.\t\tCalificaciones\tDesviaciones”
for(T=0 to T<=14 step T++)
{ Print (T+1), "\t\t" ,calif[T], "\t\t", desv[T]}
Print endl
Print "La variacion es= ", variacion(desv)
Print "Promedio= ", prom(calif)}

1.- Inicio de programa
void main ()
{int calif[15]
int desv[15]
valores(calif)
desviacion(calif,desv)
desplegar(calif,desv)
fin.


problema 3.
Escriba un programa que almacene los siguientes datos en un arreglo llamado resistencia: 16, 27, 39, 56 y 81. El programa tambien debe crear dos arreglos llamados corriente y potencia, los cuales eberan sser capaces de almacenar cinco numeros en doble presicion. Haga que el programa acepte cinco numeros introducidos por el usuario en el arreglo corriente al ejecutar el programa, el cual debe almacenar en el arreglo potencia el producto de los valores correspondientes al cuadrado del arreglo corriente y del arreglo resistencia.



P-seudo codigo.
1.- Inicio
void datosArreglo(double C[5])
{int t
for(t=0 to t<5 step t++)
{Print "Dato", (t+1), "= "
Read C[t]}
Print endl}

void calcularPot(double R[5], double C[5], double P[5])
{int t
for(t=0 to t<5 step t++)
{P[t]= R[t]*pow(C[t],2)}}

double totalPot(double P[5])
{int t,suma=0
for(t=0 to t<5 step t++)
{suma=suma+P[t]}
return suma}

void desplegar(double R[5], double C[5], double P[5])
{int t
Print “Resistencia     Corriente     Potencia”
Print "---------------------------------------------"
for(t=0 to t<5 step t++)
{ Print R[t], "\t\t", C[t], "\t\t" ,P[t]}
Print endl
Print "Total=                          ", totalPot(P)
Print "\n\n"}

void desres(double r[5])
{int t
for(t=0 to t<5 step t++)
{ Print "Resistencia " ,(t+1), "= "
Read r[t]}
Print endl}

void descorr(double c[5])
{int t
for(t=0 to t<5 step t++)
{ Print "Corriente " ,(t+1), "= "
Read c[t]}
Print endl}

void desplegar2(double r[5], double c[5], double v[5])
{int t
Print "Resistencia     Corriente     Potencia"
Print "---------------------------------------------"
for(t=0 to t<5 step t++)
{ Print r[t], "\t\t", c[t], "\t\t" ,v[t]}}

void voltios(double r[5], double c[5], double v[5])
{int t
for(t=0 to t<5 step t++)
{v[t]=r[t]*c[t]}} 

1.- Inicio de programa
void main()
{double R[5]={16,27,39,56,81}
double C[5],P[5],r[5],c[5],v[5]
datosArreglo(C)
calcularPot(R,C,P)
desplegar(R,C,P)
desres(r)
descorr(c)
voltios(r,c,v)
desplegar2(r,c,v)
fin.



b) haga el mismo programa pero esta vez para calcular voltaje en vez de potencia.



P-seudo codigo.
inicio.
void datosarreglo (double c[5])
void calcularvoltios (double r[5], double c[5], double v[5])
 double calculartotalvoltios(double v[5])
void desplegar (double r[5], double c[5], double v[5])

int main()
inicio del programa.
double resistencia [5]={16,27,39,56,81
double corriente[5],voltios[5]
datosarreglo(corriente)
calcularvoltios(resistencia,corriente,voltios)
desplegar(resistencia,corriente,voltios)


void datosarreglo(double c[5])
{int I;
print"introduce los siguientes datos"
for(I=0;I<5;I++)
{print"dato".(I+1),"=?",c[I]}}

void calcularvoltios (double r[5], double c[5], double v[5])
{int I
for(I=0;I<5;I++)
{v[I]= r[I]*c[I]}}

double calculartotalvoltios(double v[5])
{double suma=0.0
int I
for(I=0;I<5;I++)
{suma=suma + v[I]}
return suma}

void desplegar(double r[5], double c[5], double v[5])
{int I
print"   resistencia       corriente              voltaje    "
print"______________________________________________________ "
print"                                                       "
for(I=0;I<5;I++)
{print"\t",r[I],"\t\t",c[I],"\t\t\t",v[I]}
print"                                                       "
print"total=\t\t\t\t\t\t ",calculartotalvoltios(v)}



problema 4.
Considere la venta de pizzas y almacene en un arreglo de caracteres el nombre de la pizza y su precio respectivo en una arreglo de precios. Calcule la orden de los clientes y la venta total de cada tipo y la venta general del dia.



P-seudo codigo.
int menupizza ()
{int opcion
print"             Pizzas El chile! :)            "
print"                                                  "
print"  -#         Pizzas              Precios-"
print"   "
print"   1    Peperoni             $70.00 "
print"   2    Hawaiana           $90.00 "
print"   3    Mexicana           $95.00 "
print"   4    Atun                  $75.50 "
print"   5    Anchoas            $80.00 "
print"       "
print" Precione 0 si desea finalizar el pedido. "
print"   "
print" pizza deceada: ",opcion
return opcion}

void totalordencliente(float preciosPizza[5], int totalesPizza[5])
{real totalorden=0
int c1=0, c2=0, c3=0, c4=0, c5=0,Tc1=0,Tc2=0, Tc3=0, Tc4=0, Tc5=0
int tipopizza
int cliente=1
real total
do
{clrscr()
tipopizza=menupizza()
switch (tipopizza)
{case 1:print"Cantidad de pizzas de Peperoni=? ",c1
Tc1 +=c1
totalorden +=c1*preciosPizza[0]
totalesPizza[0] +=c1
break;
case 2:print"Cantidad de pizzas Hawaianas=? ",c2
Tc2 +=c2
totalorden +=c2*preciosPizza[1]
totalesPizza[1] +=c2
break;
case 3:print"Cantidad de pizzas Mexicanas=? ",c3
Tc3 +=c3
totalorden +=c3*preciosPizza[2]
totalesPizza[2] +=c3
break;
case 4:print"Cantidad de pizza de Atun=? ",c4
Tc4 +=c4
totalorden +=c4*preciosPizza[3]
totalesPizza[3] +=c4
break;
case 5:print"Cantidad de pizzas de Anchoas=? ",c5
Tc5 +=c5
totalorden +=c5*preciosPizza[4]
totalesPizza[4] +=c5
break;
case 0: print"  pizzas el chile! :)"print
print"    ticket de compra"
if(Tc1>0)
{print,Tc1" pizzas de peperoni: ",(Tc1*70.00)}
if(Tc2>0)
{cout<<Tc2<<" pizzas Hawaianas: "<<(Tc2*90.00)<<endl;}
if(Tc3>0)
{print,Tc3," pizzas Mexicanas: "(Tc3*85.00)}
if(Tc4>0)
{print,Tc4," pizzas de Atun: "(Tc4*75.50)}
if(Tc5>0)
{print,Tc5," pizzas de Anchoas: ",(Tc5*80.00)}
total=((Tc1*70.00)+(Tc2*90.00)+(Tc3*85.00)+(Tc4*75.50)+(Tc2*80.00))
print"Precio total de la compra = $",total
print"    "print
print"Gracias por su compra, lo esperamos pronto."
break;
default: print"No se encontro la opcion de la pizza deseada."}
cliente++}
while(tipopizza!=0);}

void desplegartotalesPizza(int totalesPizza[5],float preciosPizza[5], char nombres[5][20])
{int I
real totales=0
print"Reporte de ventas"
for(I=0;I<4;I++)
{print,nombres[I],"\t",totalesPizza[I],"\t"preciosPizza[I],
totales=preciosPizza[I]*totalesPizza[I]}
print"Total del dia $",totales}

int main()
{char sigue
int totalesPizza[5]={0,0,0,0,0}
char nombrePizza[5][20]={{"Peperoni pizza"},{"Hawaiana pizza"},{"Mexicana pizza"},{"Atun pizza"},{"Anchoas pizza"}}
real preciosPizza[5]={70.00,90.00,85.00,75.50,80.00}
do
{totalordencliente(preciosPizza, totalesPizza)
print"Desea otra orden (S/N): ",sigue}
while(sigue=='s' || sigue=='S');
desplegartotalesPizza(totalesPizza,preciosPizza,nombrePizza)


Tutorial con funciones.















domingo, 8 de abril de 2012

practica 10 (problemas).

problema 1.
Utilizando funciones, realice las operaciones suma y multiplicación sin parámetros y sin entregar valores. Otra función llamada imprimeasteriscos para imprimir en una linea 10 asteriscos. Probar las funciones en main().



P-seudo codigo.
1.- Inicio
void imprimeasterisco()
{INT l
for(I=1 to I<=10 step I++)
{Print "*"}
Print endl}

void suma()
{INT a,b
Print "Calcula suma"
Print "Valor 1= "
Read a
Print "Valor 2= "
Read b
Print a, " + ", b ,"= ", (a+b)
}

void multiplicar()
{INT a,b
Print "Calcula la multiplicacion\n";
Print "Valor 1= ";cin>>a;
Print "Valor 2= ";cin>>b;
Print a ," * ", b ,"= ", (a*b)
}

1.- Inicio de programa
void main()
{imprimeasterisco()
suma()
imprimeasterisco()
multiplicar()
imprimeasterisco()
fin.



problema  2.
Utilizando funciones realiza las operaciones suma y multiplicación con dos parámetros enteros y sin entregar valores. Otra función llamada imprimeasterisco() con parámetros N de tipo entero para especificar la cantidad de asteriscos a imprimir. Una función imprimemayor() dos parámetros enteros y la función imrpimemenor() con dos parámetros enteros.



P-seudo codigo.
1.- Inicio
void imprimeasteriscos(int N)
{INT I
for (I=1 to I<=N step I++)
{Print "*"
}
Print endl}

void sumar(int op1, int op2)
{ Print  op1, " + " ,op2, "= " ,(op1+op2)}

void multiplicar(int op1, int op2)
{ Print  op1, " * " ,op2, "= " ,(op1*op2)}

void imprimemayor(int op1, int op2)
{int mayor
if(op1>=op2)
{mayor=op1}
else
{mayor=op2}
Print "El dato mayor es= ", mayor
}

void imprimemenor(int op1, int op2)
{int menor
if(op1>=op2)
{menor=op2}
else
{menor=op1}
Print "El dato menor es= ", menor
}

1.- Inicio del programa
void main()
{
INT valor1,valor2,num=20
imprimeasteriscos(30)
sumar(32,80)
multiplicar(14,2)
imprimemayor(32,80)
imprimemenor(32,80)
Print  "Valor 1= "
Read valor1
Print  "Valor 2= "
Read valor 2
imprimeasteriscos(num)
sumar(valor1,valor2)
imprimeasteriscos(30)
multiplicar(valor1,valor2)
imprimeasteriscos(num)
imprimemayor(valor1,valor2)
imprimeasteriscos(30)
imprimemenor(valor1,valor2)
imprimeasteriscos(num)
fin.


problema 3.
Hacer un programa con funciones para calcular:  

  • el areacuadrado(), perimetrocuadrado.





  •  arearectangulo(), perimetrorectangulo(). 





  • areacirculo con los parámetros adecuados. 


entregando valores en el momento de llamada.

P-seudo codigo.
1.- Inicio
Real areacuadrado ( Real  lado)
{return lado*lado}

Real perimetrocuadrado ( Real  lado)
{return 4*lado}

Real arearect ( Real  largo, Real ancho)
{return largo*ancho}

Real perimetrorect (Real largo,  Real  ancho)
{return (largo+ancho)*2}

Real areacirculo (Real  radio)
{return 3.1416*radio*radio}

void menufiguras()
{Print "Calculo de Area y Perimetro de figuras"
Print "1) Cuadrado"
Print "2) Rectangulo"
Print "3) Area del Circulo"
Print "Seleccione opcion= "}

1.- Inicio de programa
void main()
{int opcion=0
char sigue
Real ld=0.0,la=0.0,an=0.0,radio=0.0
do
{clrscr()
menufiguras()
Read opcion
Print endl
switch(opcion)
{
case 1:  Print  "Calculo de Area y Perimetro de un cuadrado\n";
Print  "Lado= "
Read ld
Print  "Area= ", areacuadrado(ld)
Print  "Perimetro= ", perimetrocuadrado(ld)
break
case 2:  Print  "Calculo de Area y Perimetro de un rectangulo\n";
Print "Largo= "
read la
Print  "Ancho= "
Read an
Print  "Area= ", arearect(la,an)
Print  "Perimetro= ", perimetrorect(la,an)
break
case 3:  Print  "Calculo de Area de un circulo"
Print  "Radio= "
Read radio
Print  "Area= ", areacirculo(radio)
break
default: Print "Error en opcion"}
Print  endl
Print  "Desea continuar (s/n)= "
Read sigue}
while(sigue=='S'||sigue=='s')
fin.

problema 4.
Escribe una función denominada triangulorectagulo() que acepte la longitud de dos lados de un triangulo rectángulo con los argumentos a y b respectivamente. La funcion debe determinar y devolver la hipotenusa, c del triangulo.(utilice teorema de pitagoras).



P-seudo codigo.
1.- Inicio
Real triangrect (Real la,  Real  lb)
{return sqrt (la*la + lb*lb)}

Real volcil ( Real  r,  Real  L)
{return 3.1416*r*r*L}

Real areasup ( Real  r, Real  L)
{return 2*3.1416*r*L}

INT menu()
{INT opc=0
Print "1) Calculo de Hipotenusa de un triangulo rectangulo"
Print "2) Calculo del volumen de un cilindro"
Print "Elige una opcion= "
Read opc
return opc}


1.- Inicio del programa
void main()
{Real la,lb,radio,largo
INT opcion=0
do
{clrscr()
opcion=menu()
Print endl
switch(opcion)
{
case 1:
Print  "Calculo de la Hipotenusa de un triangulo rectangulo"
Print  "Lado A= "
Read la
Print  "Lado B= "
Read lb
Print  "Valor hipotenusa= ", triangrect(la,lb)
break
case 2: 
Print  "Area y Volumen de un Cilindro"
Print  "Radio= "
Read radio
Print  "Largo= "
Read largo
Print  "Volumen= ", volcil(radio,largo)
Print  "Superficie= ", areasup(radio,largo)
break
case 0:
Print  "Fin del programa"
break
default:
Print "Error en opcion"}
Print endl
Print  "Desea continuar 1)Si 0)No= "
Read opcion}
while(opcion!=0)
clrscr()
Print  "Fin del programa"
fin.

Problema 5.
El volumen, v de un cilindro esta dado por las siguientes formulas b=pir^2h donde r es el radio y h es el largo. Utilizando esta formula escriba una función llamada volsil() que acepte el radio y largo de un cilindro y devuelvo el volumen.
La superficie,s, esta por la siguiente formula s=2pirh donde r es el radio y h es el largo. Utilizando esta formula haga una función llamada areasup() que acepte radio y largo  de un cilindro y devuelva la superficie.



P-seudo codigo.
1.- Inicio.
Real triangrec(Real a, Real b)
{return sqrt(a*a + b*b)}

Real volcil (Real r, Real L)
{return 3.1416*r*r*L}

Real areasup(Real r, Real L)
{return 2*3.1416*r*L}
int menu()
{int opc
Print “1) Calculo de Hipotenusa de un triangulo rectangulo”
Print “2) Calculo del volumen de un cilindro”
Print “Elige una opción”
Read opc
Return opc}

Inicio de Programa
la, lb, radio, largo Real
opcion INT
do
{clrscr()
Opción= menú()
Switch(opcion)
{
Case 1: Print “Calculo de la Hipotenusa de un triangulo rectangulo”
Print “Lado A= “
Read la
Print “Lado B= “
Read lb
Print “Valor hipotenusa= “, triangrect(la,lb)
Break

Case 2: Print “Area y Volumen de un Cilindro”
Print “Radio= “
Read radio
Print “Largo= “
Read radio
Print “Volumen= “, volcil(radio,largo)
Print “Superficie= “areasup(radio,largo)
Break

case 0:
Print "Fin del programa"
break

default:
Print "Error en opcion"
Print endl
Print "Desea continuar 1)Si 0)No= "
Read opcion}
while(opcion!=0)
clrscr()
Print "Fin del programa"}
Fin.