Ejercicios bucles y condicionales Aquí os dejo otros cinco ejercicios 1. Realiz ealizar ar un pro progra grama ma (EcuacionTercerGrado.m),
que pida los coefcientes de una ecuacin de !er grado y en "uncin del discriminate diga cuantas raices tiene y de que tipo son las raices (reales o complejas). #ota$ #o es necesario calcular las raices %. En base al progra programa ma anterior anterior realiz realizar ar un segundo segundo programa programa (EcuacionTercerGrado2.m), que pregunte si quiere continuar introduciendo i ntroduciendo ecuaciones, y si es así que &uel&a a preguntar preguntar por los coefcientes. !. Realiz ealizar ar un pro progra grama ma (SucesionCondicional.m ) que calcule los terminos de la sucesion$ 'n1*a+'n si 'n1-%, a+(1'n) si 1-% ' n/ preguntando preguntando por el &alor incial ' 0 y el coefciente a y el nmero de t2rminos. El &alor de a 3a de ser mayor que cero y el de '0 3a de estar en el inter&alo 40,15 6. Realiz ealizar ar un pro progra grama ma (SucesionCondicional2.m ), sume todos los terminos que se muestren muestren por pantalla en el ejercicio anterior, y clacule tambi2n su producto. 7a suma y el producto se mostrar8 al fnal. 9. Realiz ealizar ar un pro progra grama ma (SucesionCondicional3.m ) que que dir8 si la sucesin con&erge a un &alor si despu2s de % iteraciones seguidas, el &alor no cambia, que di&erge si algn &alor de la sucesin no es fnito. : desconocido, si despu2s de # iteraciones la sucesin, ni con&erge, no di&erge.
;oluciones bucles Aquí os dejo las soluciones de los ejercicios de bucles *Media.m % Autor: Diego Viadero Lucas % Descripcion: Programa que recoja números del usuario hasta que se introduzca un ! despu"s de#uel#a la media de los números introducidos. % $echa: &'' % (nicio n)input+Dame un #alor: +, % -omramos una #ariale que cuente el numero de #eces que se realiza el % ciclo contador, c)/ % -omramos una #ariale p0ra que se a cumule n en cada ciclo #)/
1hile n2) c)c3/ #)#3n/ n)input+Dame un #alor: +, end % 4alculamos la media ! la imprimimos en pantalla m)#5c/ disp+La media es: +, dispm, % $in disp+$in de programa+,
en el cual os lle&ara a un ?@, en el que &iene in"ormacin de como realiza un bucle$ 3ttps$--dlBeb.dropbo'.com-get 3ttps$--dlBeb.dr opbo'.com-get-=atlab-;entenc -=atlab-;entencias@eContr ias@eControl
•
•
•
•
•
•
•
Hacer un programa ( media.m ) que recoja nmeros del usuario 3asta que se introduzca un 0 y despu2s de&uel&a la media de los l os nmeros introducidos. Hacer un programa que pida un nmero y &aya decrementando su &alor en una unidad 3asta que llegue a cero ( decremento.m). Hacer un programa que pida un numero y compruebe si ese numero es primo (primo.m ). Hace un programa que pida un nmero 3asta que este nmero sea mayor que cero, indicando con un mensaje que el nmero introducido introducido no es mayor de cero (numeroCorrecto.m ). Hacer un programa para imprimir la sucesin de ibonacci (CalcularSucesionFibonacci.m) Hacer un programa para calcular el "actorial de un nmero. ( CalcularFactorial.m ) Hacer un programa que pida un nmero # y despliegue todas las combinaciones de dos nmeros que sumados den #. ( CombinacionesDeNumeros.m ) Hacer un programa que despliegue la tabla de multiplicar de un nmero I. (TablaDeultiplicar.m )
;oluciones condicionales (i") Aquí &an la soluciones a los cuatro ejercicios de la entrada anterior$ (7as palabras en &erde &erde son anotaciones mías y lo de negrita es lo que meteríamos en =atlab o
Jcata&e para realizar el programa) !edad.m
K@escripcion$ ?rogama que determine la edad de la persona KAutor$ @iego Liadero 7ucas Kec3a$ %01%1011 K0. Mnicio K1.?edir un la edad y guardarlo en la &ariable A Ainput (NOCuantos aPos tienesDN) K%. Comparar si A1G, si lo es imprimir en pantalla que A K es menor de 1G aPor i" A1G disp (NEs menor de edadN) K!. Comparar si AQ0, si lo es imprimir en pantalla que A K es de la tercera edad elsei" AQ0 disp (NEs de la tercera edadN) else A0 disp (NEs mayor de edadN) end K6.imprimir en pantalla Nin de programaN disp (Nin de programaN) K9.in !si"nos.m
K@escripcion$ ?rograma que determine si dos &ariables sean K
positi&as o negati&as
KAutor$ @iego Liadero 7ucas Kec3a$ %01%1011
K0. Mnicio K1.?edir un &alor y guardarlo en la &ariable M Minput (NOCuanto &ale MDN) K%.?edir un &alor y guardarlo en la &ariable S Sinput (NOCuanto &ale SDN) K!. Comparar si MQ0 i" MQ0
i" SQ0 disp (N?J;MTMLJ;N)
elsei" S0 disp (N=EUC7A@J;N) end
elsei" M0 disp (N#EVATMLJN) end K6.imprimir en pantalla Nin de programaN disp (Nin de programaN) K9.in !raices#2
K
@escripcion$ programa que permite calcular raíces cuadr8ticas, sin
K
salir del programa, pregunt8ndonos cuando queremos fnalizar.
K
Autor$ @iego Liadero 7ucas
K
ec3a$ %01%1011
K 0.Mnicio K 1.Mntroducir coefcientes ainput(N@ame el &alor del coefciente que acompaPa a 'W%$ N) binput(N@ame el &alor del coefciente que acompaPa a '$ N) cinput(N@ame el &alor del t2rmino independiente$ N) i" (b+b6+a+c)Q0 R1(bsqrt(bW%6+a+c))-(%+a) R%(bsqrt(bW%6+a+c))-(%+a) disp(N7as soluciones sonN) disp(R1) disp(R%) else isqrt(1) Ri1(bsqrt((bW%6+a+c))+i)-(%+a) Ri%(bsqrt((bW%6+a+c))+i)-(%+a) disp(N7as soluciones sonN)
disp(Ri1) disp(Ri%) end disp(Nin de programaN) (7a "uncin sqrt se utiliza cuando queremos 3acer un raiz de un numero)
Condicionales Aquí os dejo una introduccin de como usar los condicionales en =atlab
Esta imagen son cuatro ejercicios para practicar las condicionales y ya subir2 las soluciones.
=AR %!
Xso del "print" =uy buenas en este post os &oy a contar como utilizar el matlab la siguiente "uncin llamada fprintf$ +Esta "uncion nos &a a permitir escribir por pantalla un resultado que no sabemos, pero que le calculamos a lo largo de nuestro programa, aunque tambi2n se puede escribir cosas que sepamos. Este resultado puede ser tanto un numero como te'to . %&'(TNTE$ &ara introducir cual*uier resultado con el fprintf tenemos *ue "uardarlo pre+iamente en el pro"rama creado en una +ariable
+ &rimero $ escribimos el "print" +Se"undo$ ponemos los par2ntesis y las comillas, dentro de esto escribimos lo que queremos que aparezca por pantalla, poniendo un YKY donde queremos que aparezca los resultados guardados en sus respecti&as &ariables. Hay que tener en cuenta lo siguiente en "uncin de lo que queramos introducir$ +Zueremos introducir un te,to$ -s +Zueremos introducir un numero con todos los decimales que se obtengan$ -f +Zueremos introducir un numero entero (sin decimales)$ -d Susto antes de la ultima comilla ponemos un n para que 3aga un salto de linea (esto ultimo es por un tema de est2tica a la 3ora de ejecutar el programa pero el "print" "unciona igual sin el) Tercero$ @espu2s de la comilla ponemos una coma y seguido el nombre de las
&ariables en las que guardamos los &alores que queremos escribir, las &ariables las tenemos que poner en el orden en el que aparezcan los &alores que le corresponden dentro de las comillas. +7a mejor manera de e'plicar esta "uncin es con unos ejemplos así que a3í &an$
+ Como &emos en ambos ejemplos podemos introducir &alores que ya sabes o &alores que calculamos a lo largo del programa *ui os de/o un e/ercio para *ue practi*u0is$
Realizar el siguiente programa sin usar mens. Ha de 3acer cada los pasos que se indican y terminar. Xsar las operaciones entre &ectores (.- .+) y "unciones que calculan m8'imos o sumas de &ectores (sum, ma') Realizar un programa llamado FormulaElectoral.m que$ 1. ?ida el nmero de representantes (escaPos) disponibles %. El nmero de listas (partidos políticos) candidatas !. El nmero de &otos por lista (partido) y que esta in"ormacin la guarde en un &ector fla de tantas columnas como listas (partidos) 3aya. ?ara ello que imprima el siguiente mensaje por pantalla para pedir el nmero de &otos por lista (partido)$ 6. @ame el nmero de &otos de la lista 1$ %!%1%! 9. @ame el nmero de &otos de la lista %$ !600!%% ... . Calcular el nmero de representantes (escaPos) por lista (partido). Esta in"ormacin se guardar8 en un &ector de tamaPo el numero de listas (partidos) e'istentes. ?ara elaborar el c8lculo se inicializar8 el &ector a ceros, y dentro de un bucle while que iterar8 3asta el nmero de representantes (escaPos) introducido en el punto 1). En cada interacin calcular8 para cada lista (partido) el siguiente cociente$ CocienteLotos-(Representates1) Cada cociente calculado para cada lista (partido) se guardar8 en un &ector de tamaPo igual al nmero de listas (partidos). @e ese &ector de cocientes se buscar8 cu8l es el m8'imo y la posicin del m8'imo$ QQ 3elp ma' Esta posicin ser8 la lista (partido) ganadora y se incrementar8 su nmero de representantes (escaPos) en una unidad. . Xna &ez obtenido el &ector con los representantes (escaPos) ganados por cada lista (partido), imprimir los resultados por pantalla. 7a in"ormacin se mostrar8 en "ormato de tabla con todas sus columnas bien YalineadasY. Cada fla mostrar8 la in"ormacin para cada lista (partido)$ G. ?artido 1$ %!%1%! &otos[ %!.GK &otos[ F representantes[ %1.FGK representantes
?artido %$ !600!%% &otos[ 6!.69K &otos[ 10 representantes[ 69.6!K representantes 7a primera columna ser8 el partido con su nmero representado con % ci"ras. 7a segunda columna consistir8 en el nmero de &otos (entero en base 10) recibidos por el partido. 7a tercera columna ser8 el nmero de representantes (escaPo) obtenido representado con ! ci"ras (entero en base 10). 7a cuarta columna el porcentaje de &otos recibidos redondeado a % ci"ras decimales. 7a quita columna el porcentaje de representantes (escaPos) ganados redondeado a % ci"ras decimales.
=A: F
Xso de "unciones A continuacin os &oy a e'plicar como crear y usar una "uncin. 7a aplicacin de la "uncin es la siguiente$ Hemos &isto que =AT7A< nos permite llamar a "unciones para lle&ar a cabo determinadas tareas o c8lculos, como por ejemplo$ ainput(NMntroduce un &alor$ N)[
bsqrt(a)[ disp(Nsu raiz cuadrada &ale$ N)[
disp(b)[
"unction 4a5modulo(',y) asqrt('W%yW%)[ 4...5 disp(N;u modulo &ale$ N)[ disp(modulo(',y))[
Funciones de 1suario
7as "unciones de usuario permiten di&idir un programa en componentes m8s pequePos, con un objeti&o propio. ?or tanto un programa =AT7A< puede ser modularizado usando "unciones, por ejemplo$ "unction 4m5modulo(',y) "unction 4d5direccion(',y) "unction 4\5con&ertir\el&inCentigrado(C) "unction 4\5con&ertir\el&inCentigrado(C) "unction 4p5es?rimo(n) "unction 4cuota5calcularCuota=ensual(capital,plazo,interes) "unction 4A5calcularArea(...) "unction 4?5calcular?erimetro(...) odulariacin de &ro"ramas
Cuando me refero a que un programa de matlab puede ser modulariado usando "unciones me refero a lo siguiente$ En muc3os programas es bastante comn querer ejecutar un conjunto de instrucciones en &arias partes de un mismo programa de "orma repetiti&a. Este conjunto de instrucciones puede ser incluido dentro de una "uncin pudi2ndose acceder en cualquier momentoa ella. ?or tanto el uso de "unciones e&ita la necesidad de programar de "orma redundante las mismas instrucciones. @ebido a esta descomposicin los programas poseen una lgica m8s clara "acilitando su escritura, lectura y depuracin de errores. Esto es especialmente cierto para programas complicados y largos, y es por ello que normalmente cualquier programa en =AT7A< es modularizado siendo una buena costumbre de pro"ramacin.
De4nicin de Funcin
Xn "uncin es un subprograma defnido por el programador que es escrito usando instrucciones est8ndar de =AT7A< en un fc3ero .m, y usado como cualquier otra instruccin de =AT7A< en cualquier otro fc3ero .m. Como cualquier otra instruccin de =AT7A<, las "unciones tienen un nmero y posicin de argumentos de entrada y salida. Xna "uncin puede ser accesible desde cualquier punto de un programa y una &ez que la "uncin 3a lle&ado a cabo su tarea, el control ser8 de&uelto al punto desde donde se llam. Veneralmente una "uncin procesar8 la in"ormacin que se le pase desde el punto de llamada y de&ol&er8 unos &alores. A esta in"ormacin se la denomina argumentos o par8metros de entraday a los &alores de&ueltos se les denomina argumentos o par8metros de salida.
Xna "uncin tiene dos componentes principales$ ] 7a declaracin de la "uncin con sus argumentos ] : el cuerpo de la "uncin ES. "unction 4as1, as%, ... as=5nombreuncion(ae1, ae%, ... ae#) Cuerpo de la "uncin ^?ara declarar una "uncin el comando es "unction ^#o e'iste límite en el nmero de argumentos de entrada o salida. ^7os argumentos de salida se engloban con 4 5 y los de salida con ( ) A la 3ora de nombrar las "unciones 3ay que seguir los mismos criterios que para las &ariables. Ejemplo$ "unction 4a5modulo(',y) asqrt('W%yW%)[ ?are 3acer un programa con "unciones es muy %&'(TNTE tener en cuenta los siguientes puntos$ ^7as "unciones tienen su propio fc3ero .m. ^7o primero para crear una "uncin es crear un nue&o fc3ero .m. ^7a primera linea del fc3ero 3a de ser la instruccin "unction ^M=?JRTA#TE$ asegurarse de que el nombre de la "uncin es algo "8cil de recordar. ^@espu2s de crear la "uncin 3ay que sal&ar el fc3ero .m ^M=?JRTA#TE$ El nombre del fc3ero tiene que ser el mismo que el nombre de la "uncin ^7as lineas de cdigo que se escriben a continuacin de la instruccin "unction se denominan cuerpo de la "uncin y contienen otras instrucciones =AT7A< u otras "unciones. Es aquí donde todos los operaciones, o lgica de la "uncin son escritos. Xna &ez que sepamos estos puntos podemos empezar a escribir una "uncion, una ayuda para 3acer las primeras "unciones con matlba es la siguiente$ Cuando se escribe una "uncin es importante determinar los argumentos-par8metros de entrada y salida. ?or tanto es una buena idea desarrollar un pequePo esquema en el programa, para escribirlo lo ponemos como si "uese un comentario(K), como por ejemplo$ +Ejemplo del fc3ero modulo.m $ "unction 4a5modulo(',y) Kamodulo(',y) $ "uncin que calcula el modulo de un &ector K a partir de sus coordenadas ' e y. K K Argumentos de entrada$ K '$ coordenada ' del &ector K y$ coordenada y del &ector K K Argumentos de salida$ K m$ modulo del &ector
asqrt('W%yW%)[
Xna &ez leido, comprendidos estos conceptos lo tendremos que poner en practica para ellos os pongo a continuacion una serie de sencillos ejercicios que mas tarde subir2 resueltos$ Ejercicios ^ Escribir una "uncin, llamada miTriangulo a la cual le pasemos la longitud de los ! lados y de&uel&a el 8rea y perímetro del triangulo usando la "ormula de Heron Escribir una "uncin en =AT7A< que calcule el 8rea de un trapecio dados las longitudes de los lados paralelos y la distancia entre ambos lados. 7a "uncin se llamar8 areaTrapecio, y tendr8 tres argumentos de entrada$ lado1, lado% y altura. Escribir tambi2n el script asociado que pida la in"ormacin necesaria y escriba el resultado por pantalla El índice de masa corporal (M=C) es una medida de asociacin entre el peso y la talla de un indi&iduo, utilizado para e&aluar su estado nutricional, de acuerdo con los &alores propuestos por la Jrganizacin =undial de la ;alud. El M=C se calcula di&idiendo el peso del indi&iduo (en >ilogramos) por su altura (en metros) al cuadrado. El &alor obtenido no es constante, sino que &aría con la edad y el se'o y tambi2n depende de otros "actores, como las proporciones de tejidos muscular y adiposo. Escribir una "uncin ( calculo%C.m ) que a la que se le pase los &alores correspondientes del peso del indi&iduo y su altura como argumentos de entrada y de&uel&a$ 1. el &alor de su M=C, %. el &alor de su categoría como un a cadena de te'to que sea NMn"rapesoN si M=C1F, N;obrepesoN son M=CQ%9 y N?eso normalN si 1FM=C%9 !. y el &alor de su peso ideal, que ser8 el peso correspondiente a un M=C1F si su categoría es NMn"rapesoN o M=C%9 si su categoría es N;obrepesoN Hacer uso de la "uncin dentro de un script ( enu%C.m ), que cree un men, con la opciones$ 1) Mntroducir peso (>g) %) Mntroducir altura (cm) !) Calcular M=C, Categoría y ?eso Mdeal 6) =ostrar resultados 9) Reiniciar =enu 0) ;alir 7a opcin !) slo estar8 disponible cuando 3aya introducido el peso y la altura de "orma correcta. 7a opcin 6) solo se acti&ar8 cuando se 3aya pulsado la opcin !). 7a opcin 9) se acti&ar8 cuando 3aya introducido un &alor &8lido de altura o de peso. ;i se selecciona la opcin 9) el men &ol&er8 a su estado incicial, como si no se 3ubiese introducido ni un &alor para peso ni para altura. 7os &alores para peso y altura solo ser8n &8lidos si son mayores que cero. ;i el usuario introduce un &alor no &8lido, el programa &ol&er8 a preguntar por el &alor (sin pasar otra &ez por el men). =ostrar por pantalla el M=C con % decimales y % posiciones para la parte entera. Con respecto al peso, usar 1 decimal y ! posiciones para la parte entera. =ostar la altura en centrimetros sin decimales y ! caracteres.
=A: F
RE;J7XCM_# @E ?RJVRA=A; @E X#CMJ#E; Aquí os dejo la solucin del ultimo ejercicio propuesto de "unciones. El te'to que esta en color &erde son solo comentarios para que sig8is a la 3ora de realizar el programa mientras que el te'to en negro es lo que 3ay que escribir en matlab para la ejecucin del programa EN1 %C
K?edimos la altura y el peso para calcular el M=C y lo guardamos en dos K&ariables distintas. KXtilizamos la "uncion M=C creada anteriormente K@escripcion$ ?rograma que pidiendo los &alor del el peso y la altura de Kuna persona calcula el indice de masa corporal de esa persona utilizando Kuna "uncion creada anteriormente. KAutor$ @iego Liadero 7ucas Kec3a$%01%1%16 KCreamos estas &ariables para que luego en el bucle podamos modifcarlas M#0[ M=C10[ 30[ p0[ 3cargado0[ pcargado0[ KMniciar un bucle para que el programa impra siempre por pantalla el menu Ka no ser que el usuario pulse el 0 B3ile M#0[ K?edimos la altura y el peso para calcular el M=C y lo guardamos en dos K&ariables distintas. disp (N1. Mntroducir la altura (m)N) disp (N%. Mntroducir el peso (>g)N) KCreamos el i" para que la opcion del menu tres no se muestre sin que Kantes se 3ayan introducido el peso y la altura i" 3cargado1 `` pcargado1 disp (N!. Calcular M=C, Categoría y ?eso Mdeal N) end KCreamos el i" para que la opcion del menu cuatro no se muestre sin que Kantes se 3aya utilizado la opcion tres i" M=C11 disp (N6. =ostrar resultadosN) end disp (N9. Reiniciar =enuN) disp (N0. ;alirN) opcioninput (Nseleccione una opcion del menu$ N)[
KMntroducimos la &ariable sBitc3 para que el programa realice las Kdi"erentes "unciones que 3ay en cada apartado del menu sBitc3 opcion
case 0 K;i el usuario pulsa cero el programa debe de salir del bucle y Ky por lo tanto fnalizar el programa M#1[ case 1 KCreamos un bucle para que si el usuario introduce un &alor de Kla altura 0 te &uel&a a preguntar por el &alor de la altura Ksin tener que pasar por el menu 31[ B3ile 30 3input(N@ame el &alor de la altura en metros$ N)[ end K?ara pasar la altura en metros a centimetros 3cm3+100[ KCambiamos el &alor de la &ariable para que aparezca la opcion Ktres del menu una &ez que tambien marquemos el peso 3cargado1[ case % KCreamos un bucle para que si el usuario introduce un &alor de Kla altura 0 te &uel&a a preguntar por el &alor de la altura Ksin tener que pasar por el menu p1[ B3ile p0 pinput(N@ame el &alor del peso en >ilogramos$ N)[ end KCambiamos el &alor de la &ariable para que aparezca la opcion Ktres del menu una &ez que tambien marquemos la altura pcargado1[ case ! -%ntroducimos la funcion creada anteriormente en otro scrip
4M=C,categoria,pideal5calculoM=C(3,p)[ KCambiamos el &alor de esta &ariable para que se pueda mostrar Kla opcion de menu 6 M=C11[ case 6 KXtilizando el "print" imprimimos por pantalla un mensaje que nos indica Klos resultadosobtenidos en la "uncion
"print"(NXn indi&iduo con peso K.1" \gs y altura K!d cms tiene Ks (M=C K.%") y su peso ideal sería K.1" \gsnN,p,3cm,categoria,M=C,pideal)
case 9 KCambiamos el &alor de todas la &ariables de nue&o a cero para Kque cuando el usuario pulse la opcion 9 del menu el programa Kse reinicie y pregunte otra &ez por los &alores M=C10[
30[ p0[ 3cargado0[ pcargado0[ end
end C5C15' DE %C
"unction 4M=C,categoria,pideal5calculoM=C(3,p) K4Altura,?eso5calculoM=C(3,p) $ crear una "uncion en la cual metiendo los K&alores de la altura y el peso nos calcula el indice de masa corporal de Kcada persona K K Argumentos de entrada$ K 3$altura de la persona K p$ peso de la persona K K Argumentos de salida$ K M=C$ indice de masa corporal K pideal$ el peso ideal para las persornas con in"rapeso o sobrepeso K categoria$ son los di"erentes tipos de peso de cada persona K KAutor$ @iego Liadero 7ucas Kec3a$%01%1%1! K KCalculamos el M=C M=C p-(3W%)[ KCreamos un i" para saber en "uncion del resultado del M=C nos indique la Kcategoria del peso de esa persona i" M=CQ1F `` M=C%9 categoria N?eso normalN[ KComo las personas que esten en esta categoria ya estan en Ksu peso ideal igualamos el peso que 3a introducido la Kpersona en la &ariable p a la &ariable pideal pidealp[
elsei" M=C1F categoria NMn"rapesoN[ KCalculamos el peso ideal para las personas con in"rapeso Kcalculamos cual seria su peso ideal sabiendo que el minimo KM=C para tener un peso normal es 1F pideal1F+(3W%)[ else categoriaN;obrepesoN[ KCalculamos el peso ideal para las personas con sobrepeso Kcalculamos cual seria su peso ideal sabiendo que el ma'imo KM=C para tener un peso normal es %9 pideal%9+(3W%)[
end Compartirlo en google 1 no cuesta nada [) 61% 'S DE7' EN5CES DE DESC(G$
E#X#CMA@J$ 3ttps$--BBB.dropbo'.com-s-1>crtdj0d&nc6lr-entregarK%GM=CK%F.png =E#X M=C$ 3ttps$--BBB.dropbo'.com-s-'Gz3z&m>pdspc'i-menuM=C.m ?RJVRA=A M=C$ 3ttps$--BBB.dropbo'.com-s-eianB0zyo'u3>"y-calculoM=C.m
=A: F
RE;J7XCMJ# ESERCMCMJ ?RM#T Como espero que 3ayais podido &er 3ice una actualizacion en la entrada de YX;J @E ?RM#TY En la actualizacion lo unico que cambi2 "ue la inocrporacion de un ejercicio y aqui os dejo su resolucion$ K @escripcion$ ?rograma que te permite obtener el numero de KescaPos que obtiene cada partido politico en "uncion de los K&otos conseguidos. K Autor$ @iego Liadero 7ucas K ec3a$ %01%11%% c clear all K Mnicio del ?rograma disp(NMnicio de ?rogramaN) K;e inicializan las isguientes &ariables R1[ ;Lotos0[ K ?reguntamos por el numero de escaPos y lo guardamos en una &ariable Einput(N@ime el numero de representantes disponibles$ N)[ K ?reguntamos por el numero de listas y lo guardamos en una &ariable ?input(N@ime el numero de listas candidatas$ N)[ K creamos una &ariable igual a la de escaPos, es decir que tenga el mismo K&alor, necesitamos crear esta &ariable debido a que al asignar los escaPos Ka los partidos el &alor de esta &ariable cambiara,y la necesitamos para Kcalcular el porcentaje al fnal. E1E[ K Creamos un &ector con los &otos de cada partido LLotos(?)0[ K Creamos un bucle, en el cual se saldra cuando # sea igual al numero de Kpartidos que 3ay B3ile R? K?reguntamos por los &otos que 3a obtenido cada partido, utilizando K"print" para cambiar el nuermo del partido
"print"(N@ame el numero de &otos de la lista Kd$ N,#) KCon el input guardamos el resultado en una &ariable Linput(NN)[ K;Lotos es el numero de &otos totales con el cual calcularemos el Kporcentaje despues ;Lotos;LotosL[ LLotos(R)L[ KMncrementamos el &alor de # para poder salir del bucle RR1[ end KLol&emos a igualar # a 1 para controlar las posiciones en los &ectores R1[ KCreamos un &ector escaPos para introducir los escaPos de cada partido, Kinicialmente le damos un &alor 0 y el numero de partidos es igual al Knumero de columnas LEscanos(?)0[ KCalculamos el &alor ma'imo del LLotos para asignarle un escaPo 4c,y5ma'(LLotos)[ KEn la coluna y se le da un escaPo LEscanos(y)1[ K;e realiza el bucle siempre que tenga escaPos para repartir B3ile E11 KCon esta operacion podremos seguir asignando escaPos 4c,y5ma'(LLotos.-(LEscanos1))[ LEscanos(y) LEscanos(y)1[ KRestamos un escaPo cada &az para que el bucle pueda fnalizar E1E11[ end KLol&emos a dar a # el &alor 1 para &ol&er a podercontrolar las posiciones Ken los &ectores R1[ KCreamos un bucle para poder ir poniendo la tabla de cada partido B3ile R? K?rimero calculamos el porcentaje de &otos de cada partido ?orcenajeLotos(LLotos(R)+100)-;Lotos[ K;egundo calculamos el porcentaje de escanos de cada partido ?orcentajeEscanos(LEscanos(R)+100)-E[ K Con este "print" imprimimos por pantalla los resultados y nos permite ir K&ariando los resultado para cada partido "print"(N?artido K0%d$ Kd &otos[ K0!d representantes (escanos)[ K.%"KK &otos[ K.%"KK representantes (escanos)tnN,R,LLotos(R),LEscanos(R),?orcenajeLotos,?orcentajeEscanos) K;e incrementa el &alor de # para poder salir del bucle cuando todos los Kpartidos esten asignados RR1[ end K in de ?rograma disp(Nin de ?rogramaN) Hice una pequePa modifcacion y puse los comentarios para que lo entendais mejor en &erde, estos comentarios no inuyen en el programa pero ayudan a la 3ora de 3acer el programa
SA# 1F
#XELJ; ESERCMCMJ; Hola buenos dias aquí os dejo algn ejercicio resuelto mas espero que os sir&a de ayuda y ya sabeis no cuesta nada compartir con google 1
!Como realiar un pro"rama *ue pida una fecha8 compruebe la si la fecha introducida es correcta 9 *ue te di"a si la fecha e,iste o no.
KMntroducimos unas &ariables (las que queramos) para empezar el programa dinput(Nescribe el dia$ N)[ minput(Nescribe el mes con un numero$ N)[ ainput(Nintroduzca el ano con un numero$ N)[ KLoy a parar el programa si no se cumple que el numero introducido es un numero entero Kpor otro lado si es entero continuo con el programa i"( df'(d) mf'(m) af'(a)) disp (Nel numero es decimalN) else Kcomprobamos si el aPo esta en el rango indicado i" (a100 aYYQ%016 ) "print" (Nel aPo Kd no est8 en el rango indicadoN,a) else KA3ora compruebo si el aPo es bisiesto o no, para ello utilizo la orden rem(',y) Kque me da lo que sobra si no se quieren decimales Ksi el aPo es bisiesto "%F , de lo contrario "%G "%G[ i" (rem(a,6)0) "%F[ i" (rem(a,100)0) "%G[ i" (rem(a,600)0) "%F[ end
end end i" ("%F) "print"(Nel aPo Kd es bisiestonN,a) end KA3ora compruebo que el mes este entre enero (1) y diciembre(1%) Ky que cada mes contiene sus dias correspondientes i"(m1) i" (dQ1 `` d!1) "print"(Nla "ec3a KdKdKd es correcta y e'isteN,d,m,a) else "print"(Nenero no tiene Kd diasN,d) end elsei"(m%) i" (dQ1 `` d") "print"(Nla "ec3a KdKdKd es correcta y e'isteN,d,m,a) else "print"(N"ebrero no tiene Kd diasN,d) end elsei"(m!) i" (dQ1 `` d!1) "print"(Nla "ec3a KdKdKd es correcta y e'isteN,d,m,a) else "print"(Nmarzo no tiene Kd diasN,d) end elsei"(m6) i" dQ1 `` d!0 "print"(Nla "ec3a KdKdKd es correcta y e'isteN,d,m,a) else "print"(Nabril no tiene Kd diasN,d) end elsei"(m9) i" (dQ1 `` d!1) "print"(Nla "ec3a KdKdKd es correcta y e'isteN,d,m,a) else "print"(Nmayo no tiene Kd diasN,d) end elsei"(m) i" (dQ1 `` d!0) "print"(Nla "ec3a KdKdKd es correcta y e'isteN,d,m,a) else "print"(Njunio no tiene Kd diasN,d) end elsei"(m) i" (dQ1 `` d!1) "print"(Nla "ec3a KdKdKd es correcta y e'isteN,d,m,a) else "print"(Njulio no tiene Kd diasN,d) end
elsei"(mG) i" (dQ1 `` d!1) "print"(Nla "ec3a KdKdKd es correcta y e'isteN,d,m,a) else "print"(Nagosto no tiene Kd diasN,d) end elsei"(mF) i"(dQ1 `` d!0) "print"(Nla "ec3a KdKdKd es correcta y e'isteN,d,m,a) else "print"(Nseptiembre no tiene Kd diasN,d) end elsei"(m10) i" (dQ1 `` d!1) "print"(Nla "ec3a KdKdKd es correcta y e'isteN,d,m,a) else "print"(Noctubre no tiene Kd diasN,d) end elsei"(m11) i" (dQ1 `` d!0) "print"(Nla "ec3a KdKdKd es correcta y e'isteN,d,m,a) else "print"(Nnobiembre no tiene Kd diasN,d) end elsei"(m1%) i" (dQ1 `` d!1) "print"(Nla "ec3a KdKdKd es correcta y e'isteN,d,m,a) else "print"(Nciciembre no tiene Kd diasN,d) end else "print"(Nel mes Kd no e'isteN,m) end end end KM# @E7 ?RJVRA=A hora unos e/erccios de estructuras ciclicas8 en el *ue el "rado de di4cultad +a de menos a mas : ;acer un pro"rama 9 despu0s de+uel+a la media de los n=meros introducidos.
KHacer un programa que recoja numeros del usuario 3asta que se introduzca un 0 y despues de&uel&a la media de los numeros introducidos contador0[ ninput(NMntroduce un numeroN)[ sumatorio0[ B3ile(n0) sumatoriosumatorion[
contadorcontador1[ ninput(NMntoduce un numeroN)[ end medsumatorio-contador[ "print"(N7a media &ale K"N,med) KM# : ;acer un pro"rama *ue pida un n=mero 9 +a9a decrementando su +alor en una unidad hasta *ue lle"ue a cero
ninput(NMntroduce el numeroN)[ B3ile(nQ0) disp(n) nn1[ end disp(N 0N) :;acer un pro"rama *ue pida un numero 9 compruebe si ese numero es primo
KMndica si es un numero primo clc clear all ninput(NMntroduce el numeroN) a0[ contador%[ B3ile(contadorn1) i"(rem(n,contador)0) a1[ KAqui meteria un brea> para que si ya se demuestra que es no primo que se pare el programa brea> end contadorcontador1[ end i"(a1) disp(Nel numero no es primoN) else disp(Nel numero es primoN) end :;ace un pro"rama *ue pida un n=mero hasta *ue este n=mero sea ma9or *ue cero8 indicando con un mensa/e *ue el n=mero introducido no es ma9or de cero
KMntroduce un numero menor que cero sino escribe que es mayor que cero ninput(Nintroduce numeroN) B3ile(n0 "ontYYQ
disp(NEl numero es negati&oN) ninput(Nintroduzca otro numeroN) end disp(Nel numero introducido es mayor que ceroN)