Matlab - ayuda!

 
Vista:

ayuda!

Publicado por adriana (1 intervención) el 19/04/2008 11:30:47
no encuentro una manera sencilla de hacer el sig ejercicio:
1. Cree una función llamada "analizar" que se encargue de calcular estadísticas sobre la aparición de las letras del alfabeto en un archivo de texto. La función deberá contar la cantidad de veces que aparece cada una de las letras del alfabeto (no importando si son letras mayúsculas o minúsculas, o si se trata de vocales con o sin tilde). La función tomará como argumento de entrada una cadena con el nombre del archivo que se analizará, y devolverá un arreglo de celdas de 27 filas y 3 columnas. La primera columna contendrá las letras desde la "A", hasta la "Z" (incluyendo la "Ñ"); la segunda columna contendrá la cantidad de veces que cada letra aparece en el archivo proporcionado, y la tercera columna contendrá la probabilidad de aparición de dicha letra (cantidad de apariciones entre la cantidad total de letras en el documento). La función deberá ignorar cualquier carácter que no sea una letra del alfabeto (como espacios en blanco, signos de puntuación, etc.
por favor ayudenme
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda!

Publicado por Kike (304 intervenciones) el 20/04/2008 22:44:10
nombre=input('Digite el nombre de un archivo .txt (sin comillas simples, pero finalizado en .txt): ','s');

% abrir archivo para leerlo
id_arch=fopen(nombre,'r');
if id_arch==-1 % si hay error, da mensaje de error
error(sprintf('El archivo "%s" no pudo abrirse para lectura.',nombre))
end

% Estadísticas de cada letra
A=0;
B=0;
C=0;
D=0;
E=0;
F=0;
G=0;
H=0;
I=0;
J=0;
K=0;
L=0;
M=0;
N=0;
N_=0; %letra ñ
O=0;
P=0;
Q=0;
R=0;
S=0;
T=0;
U=0;
V=0;
W=0;
X=0;
Y=0;
Z=0;

while ~feof(id_arch) % se ejecuta el lazo mientras no llegue al final del archivo de texto
linea = fgetl(id_arch); % lee línea por línea
lon=length(linea); % cuántos caracteres tiene la línea

for k=1:lon
caracter=linea(k);
switch(caracter) % compara cada caracter para agregarlo a la estadística adecuada.
case {'A','a','Á','á','Ä','ä'}
A=A+1;

case {'B','b'}
B=B+1;

case {'C','c'}
C=C+1;

case {'D','d'}
D=D+1;

case {'E','e','É','é','Ë','ë'}
E=E+1;

case {'F','f'}
F=F+1;

case {'G','g'}
G=G+1;

case {'H','h'}
H=H+1;

case {'I','i','Í','í','Ï','ï'}
I=I+1;

case {'J','j'}
K=K+1;

case {'K','k'}
K=K+1;

case {'L','l'}
L=L+1;

case {'M','m'}
M=M+1;

case {'N','n'}
N=N+1;

case {'Ñ','ñ'}
N_=N_+1;

case {'O','o','Ó','ó','Ö','ö'}
O=O+1;

case {'P','p'}
P=P+1;

case {'Q','q'}
Q=Q+1;

case {'R','r'}
R=R+1;

case {'S','s'}
S=S+1;

case {'T','t'}
T=T+1;

case {'U','u','Ú','ú','Ü','ü'}
U=U+1;

case {'V','v'}
V=V+1;

case {'W','w'}
W=W+1;

case {'X','x'}
X=X+1;

case {'Y','y'}
Y=Y+1;

case {'Z','z'}
Z=Z+1;
end % fin de switch
end % fin de for

end % fin de while

fclose(id_arch);

% Total de letras en el texto
suma=A+B+C+D+E+F+G+H+I+J+K+L+M+N+N_+O+P+Q+R+S+T+U+V+W+X+Y+Z;

arreglo={'Letra','Veces que aparece','Probabilidad';...
'A',A,A/suma;...
'B',B,B/suma;...
'C',C,C/suma;...
'D',D,D/suma;...
'E',E,E/suma;...
'F',F,F/suma;...
'G',G,G/suma;...
'H',H,H/suma;...
'I',I,I/suma;...
'J',J,J/suma;...
'K',K,K/suma;...
'L',L,L/suma;...
'M',M,M/suma;...
'N',N,N/suma;...
'Ñ',N_,N_/suma;...
'O',O,O/suma;...
'P',P,P/suma;...
'Q',Q,Q/suma;...
'R',R,R/suma;...
'S',S,S/suma;...
'T',T,T/suma;...
'U',U,U/suma;...
'V',V,V/suma;...
'W',W,W/suma;...
'X',X,X/suma;...
'Y',Y,Y/suma;...
'Z',Z,Z/suma;}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar