Sei sulla pagina 1di 5

Uso del fprintf

Muy buenas en este post os voy a contar como utilizar el matlab la


siguiente funcin llamada fprintf:
*Esta funcion nos va a permitir escribir por pantalla un resultado que no sabemos,
pero que le calculamos a lo largo de nuestro programa, aunque tambin se puede
escribir cosas que sepamos. Este resultado puede ser tanto un numero como texto .
IMPORTANTE: Para introducir cualquier resultado con el fprintf tenemos que
guardarlo previamente en el programa creado en una variable

* Primero: escribimos el fprintf


*Segundo: ponemos los parntesis y las comillas, dentro de esto escribimos lo que
queremos que aparezca por pantalla, poniendo un "%" donde queremos que aparezca los
resultados guardados en sus respectivas variables.
Hay que tener en cuenta lo siguiente en funcin de lo que queramos introducir:
*Queremos introducir un texto: %s
*Queremos introducir un numero con todos los decimales que se obtengan: %f
*Queremos introducir un numero entero (sin decimales): %d
Justo antes de la ultima comilla ponemos un \n para que haga un salto de linea (esto
ultimo es por un tema de esttica a la hora de ejecutar el programa pero el fprintf
funciona igual sin el)
Tercero: Despus de la comilla ponemos una coma y seguido el nombre de las
variables en las que guardamos los valores que queremos escribir, las variables las
tenemos que poner en el orden en el que aparezcan los valores que le corresponden
dentro de las comillas.
*La mejor manera de explicar esta funcin es con unos ejemplos as que ah van:

* Como vemos en ambos ejemplos podemos introducir valores que ya sabes o


valores que calculamos a lo largo del programa
Aqui os dejo un ejercio para que practiquis:
Realizar el siguiente programa sin usar mens. Ha de hacer cada los pasos
que se indican y terminar. Usar las operaciones entre vectores (./ .*) y
funciones que calculan mximos o sumas de vectores (sum, max) Realizar un
programa llamado FormulaElectoral.mque:
1. Pida el nmero de representantes (escaos) disponibles
2. El nmero de listas (partidos polticos) candidatas
3. El nmero de votos por lista (partido) y que esta informacin la guarde
en un vector fila de tantas columnas como listas (partidos) haya. Para
ello que imprima el siguiente mensaje por pantalla para pedir el nmero
de votos por lista (partido):
4. Dame el nmero de votos de la lista 1: 232123
5. Dame el nmero de votos de la lista 2: 3400322
...

6. Calcular el nmero de representantes (escaos) por lista (partido). Esta

informacin se guardar en un vector de tamao el numero de listas


(partidos) existentes. Para elaborar el clculo se inicializar el vector a
ceros, y dentro de un bucle while que iterar hasta el nmero de
representantes (escaos) introducido en el punto 1).
En cada interacin calcular para cada lista (partido) el siguiente
cociente:
Cociente=Votos/(Representates+1)

Cada cociente calculado para cada lista (partido) se guardar en un


vector de tamao igual al nmero de listas (partidos). De ese vector de
cocientes se buscar cul es el mximo y la posicin del mximo:
>> help max

Esta posicin ser la lista (partido) ganadora y se incrementar su


nmero de representantes (escaos) en una unidad.
7. Una vez obtenido el vector con los representantes (escaos) ganados
por cada lista (partido), imprimir los resultados por pantalla. La
informacin se mostrar en formato de tabla con todas sus columnas
bien "alineadas". Cada fila mostrar la informacin para cada lista
(partido):
8. Partido 1: 232123 votos; 23.87% votos; 9 representantes;
21.98% representantes
Partido 2: 3400322 votos; 43.45% votos; 10 representantes;
45.43% representantes

La primera columna ser el partido con su nmero representado con 2


cifras. La segunda columna consistir en el nmero de votos (entero en
base 10) recibidos por el partido. La tercera columna ser el nmero de
representantes (escao) obtenido representado con 3 cifras (entero en
base 10). La cuarta columna el porcentaje de votos recibidos
redondeado a 2 cifras decimales. La quita columna el porcentaje de
representantes (escaos) ganados redondeado a 2 cifras decimales.

Como espero que hayais podido ver hice una actualizacion en la entrada de
"USO DE FPRINTF"
En la actualizacion lo unico que cambi fue la inocrporacion de un ejercicio y
aqui os dejo su resolucion:

% Descripcion: Programa que te permite obtener el numero de %escaos


que obtiene cada partido politico en funcion de los %votos conseguidos.
%
Autor: Diego Viadero Lucas
%
Fecha: 20121122 c
clear all
% Inicio del Programa
disp('Inicio de Programa')
%Se inicializan las isguientes variables
R=1; SVotos=0;
% Preguntamos por el numero de escaos y lo guardamos en una variable
E=input('Dime el numero de representantes disponibles: ');
% Preguntamos por el numero de listas y lo guardamos en una variable
P=input('Dime el numero de listas candidatas: ');
% creamos una variable igual a la de escaos, es decir que tenga el mismo
%valor, necesitamos crear esta variable debido a que al asignar los
escaos
%a los partidos el valor de esta variable cambiara,y la necesitamos para
%calcular el porcentaje al final.
E1=E;
% Creamos un vector con los votos de cada partido
VVotos(P)=0;
% Creamos un bucle, en el cual se saldra cuando N sea igual al numero de
%partidos que hay
while R<=P
%Preguntamos por los votos que ha obtenido cada partido, utilizando
%fprintf para cambiar el nuermo del partido
fprintf('Dame el numero de votos de la lista %d: ',N)
%Con el input guardamos el resultado en una variable
V=input('');
%SVotos es el numero de votos totales con el cual calcularemos el
%porcentaje despues
SVotos=SVotos+V;
VVotos(R)=V;
%Incrementamos el valor de N para poder salir del bucle
R=R+1;
end
%Volvemos a igualar N a 1 para controlar las posiciones en los vectores

R=1;
%Creamos un vector escaos para introducir los escaos de cada partido,
%inicialmente le damos un valor 0 y el numero de partidos es igual al
%numero de columnas
VEscanos(P)=0;
%Calculamos el valor maximo del VVotos para asignarle un escao
[c,y]=max(VVotos);
%En la coluna y se le da un escao
VEscanos(y)=1;
%Se realiza el bucle siempre que tenga escaos para repartir
while E1~=1
%Con esta operacion podremos seguir asignando escaos
[c,y]=max(VVotos./(VEscanos+1));
VEscanos(y)= VEscanos(y)+1;
%Restamos un escao cada vaz para que el bucle pueda finalizar
E1=E1-1;
end
%Volvemos a dar a N el valor 1 para volver a podercontrolar las posiciones
%en los vectores
R=1;
%Creamos un bucle para poder ir poniendo la tabla de cada partido
while R<=P
%Primero calculamos el porcentaje de votos de cada partido
PorcenajeVotos=(VVotos(R)*100)/SVotos;
%Segundo calculamos el porcentaje de escanos de cada partido
PorcentajeEscanos=(VEscanos(R)*100)/E;
% Con este fprintf imprimimos por pantalla los resultados y nos permite ir
%variando los resultado para cada partido
fprintf('Partido %02d: %d votos; %03d representantes (escanos); %.2f%%
votos; %.2f%% representantes
(escanos)\t\n',R,VVotos(R),VEscanos(R),PorcenajeVotos,PorcentajeEscanos)
%Se incrementa el valor de N para poder salir del bucle cuando todos los
%partidos esten asignados
R=R+1; end
% Fin de Programa
disp('Fin de Programa')
Hice una pequea modificacion y puse los comentarios para que lo
entendais mejor en verde, estos comentarios no influyen en el programa
pero ayudan a la hora de hacer el programa