Ejemplos de secuencias de control.gonzart/lp/notas/Ejercicios_Secuencias.pdf · 2009-03-18 ·...

Preview:

Citation preview

Ejemplos de secuencias de control.

● Resolver la ecuación cuadrática:

para valores dados de a, b y c.

ax2bxc=0

Ecuación cuadrática (cont.)● Solución al problema:

– Hay 3 posibilidades para el discriminante:

● Si es positivo, hay 2 raíces reales.● Si es cero, hay solo una raíz real.● Si es negativo hay 2 raíces complejas.

x=−b±b2−4ac2a

Ecuación cuadrática (cont.)● Diseño del algoritmo (pseudocódigo)(solo parte del condicional).

Si (discriminante>0) entoncesevalúa las dos raíces reales.

else if (discriminante=0)entoncesevalúa una raíz igual a: -b/2a

else evalúa las dos raíces complejas

Ecuación cuadrática (cont.)● Programa.

– Ver:http://www.ifug.ugto.mx/~gonzart/notas/cuad.c

Ecuación cuadrática (cont.)● Verificación del programa:

– Pensar en ejemplos:

x−3∗ x2=x2−x−6

x8∗x8=x216x64

x22x3=0

Cajero automático:● Definición del problema:Se desea calcular el numero de billetes y monedas necesarias para entregar un monto en particular. Hay que utilizar el menor número de billetes y monedas posibles. Indicar la cantidad faltante si es el caso.– Los valores posibles de los billetes son:

500,200,100,50,20.– Los valores de las monedas son:

10,5,2,1,0.5,0.2,0.1.

Cajero automático:(cont.)● Solución del problema:

– Dado que se desea el menor número de billetes y monedas primero hay que calcular el numero de billetes de la mayor denominación y el residuo completarlo con la siguiente denominación y así sucesivamente hasta acabar con los posibles billetes y monedas. Imprimir el faltante.

Cajero automático:(cont.)● Algoritmo de solución:

definir cant,res como flotantes;definir num como entero;leer la cantidad deseada y guardarla en cant.res=cantnum=la parte entera de res/500.0res=res-num*500.0printf(“\n billetes de 500=%d”,num);Si res es distinto de cero, entoncesnum=la parte entera de res/200.0res=res-num*200.0printf(“\n billetes de 200=%d”,num);Si res es distinto de cero, entonces

Imprimir res.

Cajero automático:(cont.)● Programa.

– Ver:http://www.ifug.ugto.mx/~gonzart/notas/cajero.c

Cajero automático:(cont.)● Verificación de la operación.

– Que pasa con 123.25?– Con 123.35?– Con 0?– Con -123.25?

Refracción de un rayo:● Definición del problema:Se desea calcular una tabla con el angulo de refracción para ángulos de incidencia desde 0o hasta 90o en incrementos de 5o, para agua, vidrio y diamante, como medios refractantes.

Refracción de un rayo:(cont).

● Solución al problema:

– Indices de refracciónagua=1.33vidrio=1.50diamante=2.42

r=sin−1ni sin i nr

i

r

medio incidente

medio refractante

Refracción de un rayo:(cont).● Algoritmo de solución:

Define PI=3.141592654Define ni, na,nv,nd, i,ir, ra,rv,rd, números dobles.Asigna na=1.33Asigna nv=1.50Asigna nd=2.42Asigna ni=1.00Imprime “tabla para el angulo ....”Repite (i=0 a 90 de 5 en 5)

asigna ir=i*PI/180.0asigna ra=asin(ni*sin(ir)/na)asigna ra=ra*180.0/PIasigna rv=asin(ni*sin(ir)/nv)asigna ra=ra*180.0/PIasigna rd=asin(ni*sin(ir)/nd)asigna ra=ra*180.0/PIescribe (ra,rv,rd)

● Fin de repite

Refracción de un rayo:(cont).

● Programa.– Ver:http://www.ifug.ugto.mx/~gonzart/notas/refr.c

Refracción de un rayo:(cont).

● Verificación de la ejecución.– Revisar que el angulo de incidencia esté dentro del rango solicitado.

– Hacer algunos cálculos de manera manual.

– Observar si tienen sentido los resultados.

Contador de caracteres, palabras y renglones.

● Definición del problema:Hacer un programa que cuente el número de caracteres, palabras y renglones de algo tecleado.

Tabla de código ascii.http://www.lookuptables.com/

Contador de caracteres, palabras, renglones.(cont.)

● Solución al problema:– Un caracter es cualquier entrada excepto el fin del archivo

● Contar los caracteres que no sean EOF.

– Una palabra es la consecución de caracteres, las palabras se separan por espacios en blanco (spc), tabuladores (\t) y cambios de lineas (\n) (observar el plural).

● Contar el número de transiciones de no-palabra a palabra.

– Una linea SIEMPRE está separada por un cambio de linea.

● Contar el numero de \n.– El fin del docto es un EOF.

Contador de caracteres, palabras, renglones.(cont.)

● Algoritmo de solución:Definición ch como carácter.Definición dentro_palabra como entero.Definición ncarac,npal,nren como enteros.Asigna dentro_palabra=0.Asigna ncarac=npal=nren=0.Leer (ch).repite mientras ch sea diferente a EOF

incrementa en uno a ncarac.si (ch es un cambio de linea)

incrementa en uno a nren.Si (ch es spc o tab o cambio de linea)

asigna dentro_palabra=0si no y si dentro_palabra es cero

incrementa npal en unoasigna dentro_palabra=1

leer (ch)fin de repite Imprime(ncarac,npal,nren)

Contador de letras, palabras, renglones.(cont.)

● Programa.– Ver:http://www.ifug.ugto.mx/~gonzart/notas/cuenta.c

Contador de letras, palabras, renglones.(cont.)● Verificación de la ejecución.

– Hacer un texto donde se conozcan el número de palabras, renglones y caracteres:texto.txt,lo puede encontrar en el archivo zip:http://www.ifug.ugto.mx/~gonzart/notas/secuencias.zip

o en:http://www.ifug.ugto.mx/~gonzart/notas/texto.txt