% ESAME DI FONDAMENTI DI INFORMATICA DEL 15/01/2010
%
% Sia dato il file dati.txt contenente 50 interi. Il candidato implementi
% le seguenti funzioni.
%
% 1) Leggere gli elementi del file inserendo in una matrice 6x5 i soli
% numeri non negativi (i numeri negativi devono essere ignorati).
% Il prototipo della funzione è il seguente:
% function m=carica_mat(nome_f).
%
% 2) Analizzare la matrice creata con la funzione precedente e calcolare
% la media degli elementi compresi tra i valori x e y forniti in input
% dall'utente (letti interattivamente da tastiera). Il prototipo della
% funzione è il seguente: function [media, x, y]=media_mat(m).
%
% Un esempio di esecuzione del programma è il seguente:
%
% 71 83 44 49 28
% 50 4 42 70 39
% 62 45 68 96 28
% 32 77 0 65 66
% 35 0 5 96 80
% 71 5 17 1 59
%
% dammi il valore di x: 20
% dammi il valore di y: 40
% la media degli elementi compresi tra 20 e 40 è 32.400000
%
% IL CANDIDATO NON PUò CAMBIARE IL CODICE FORNITO.
%
function traccia1()
clc;
mat=zeros(6,5);
mat=carica_mat('dati.txt');
disp('la matrice letta è');
disp(mat);
[media_el,x,y]=media_mat(mat);
fprintf('la media degli elementi compresi tra %d e %d è %f \n\n', x,y,media_el);
end
function m=carica_mat(nome_f)
% DA COMPLETARE
fid = fopen(nome_f,'rt');
for i=1:6
for j = 1:5
n = fscanf(fid,'%d',1);
while n < 0
n = fscanf(fid,'%d',1);
end
m(i,j) = n;
end
end
fclose(fid);
end
function [media, x, y]=media_mat(m)
% DA COMPLETARE
x = input('dammi il valore di x: ');
y = input('dammi il valore di y: ');
sum = 0;
num = 0;
for i=1:6
for j=1:5
if m(i,j)>x && m(i,j)sum = sum + m(i,j);
num = num + 1;
end
end
end
media = sum / num;
end
i passaggi in questione sono quelli in rosso..non capisco perchè, se devo prendere i numeri positivi, devo impostare il while in quel modo (era una traccia svolta)..se metto n>0 si blocca matlab