% ESAME DI FONDAMENTI DI INFORMATICA
%
% Data una matrice con 6x6 interi generati a caso. Il candidato deve
% implementare le seguenti funzioni.
%
% 1) Calcolare la somma di tutti gli elementi della diagonale principale e
% la somma di tutti gli elementi della diagonale secondaria della matrice m.
% Il prototipo della funzione è il seguente:
% function [somma_d1, somma_d2]=somme_diagonali(m);
%
% 2) Salvare in un file il cui nome è fornito come parametro in input alla funzione,
% la matrice e i due numeri calcolati con la funzione precedente.
% Il prototipo della funzione è il seguente:
% function salva_dati(m, n1, n2, nome_file);
%
% ESEMPIO DI ESECUZIONE DEL PROGRAMMA
% La matrice A quadrata generata a caso è:
% 8 18 54 40 41 33
% 39 26 14 7 4 90
% 25 14 85 23 90 36
% 80 13 62 12 94 11
% 43 86 35 18 49 78
% 91 57 51 23 48 38
% Nella matrice A la somma degli elementi della diagonale principale vale 218
% Nella matrice A la somma degli elementi della diagonale secondaria vale 299
% Inserire il nome del file: out.txt
% Il file out.txt è stato salvato.
%
% ESEMPIO DI CONTENUTO DEL FILE SALVATO (out.txt):
% 8 18 54 40 41
% 39 26 14 7 4
% 25 14 85 23 90
% 80 13 62 12 94
% 43 86 35 18 49
% 91 57 51 23 48
% Somma diagonale principale = 218
% Somma diagonale secondaria = 299
% COMPLETARE IL PROGRAMMA SENZA
% MODIFICARE IL CODICE FORNITO E CERCARE DI RIPRODURRE
% FEDELMENTE L'ESEMPIO DI ESECUZIONE (a meno dei valori prodotti dalla funzione rand).
function traccia4()
clc;
A=fix(rand(6,6)*100);
disp ('La matrice A quadrata generata a caso è:');
disp(A);
[somma_d1, somma_d2]=somme_diagonali(A);
fprintf('Nella matrice A la somma degli elementi della diagonale principale vale %d\n',somma_d1);
fprintf('Nella matrice A la somma degli elementi della diagonale secondaria vale %d\n',somma_d2);
nome_f=input('Inserire il nome del file: ','s');
salva_dati(A, somma_d1, somma_d2, nome_f);
end
function [somma_d1, somma_d2]=somme_diagonali(m)
dim=6;
somma_d1=0;
for i=1:dim
somma_d1=somma_d1+m(i,i);
end
somma_d2=0;
for i=1:dim
somma_d2=somma_d2+m(i,dim+1-i);
end
end
function salva_dati(m, n1, n2, nome_file)
fid=fopen(nome_file,'wt');
if fid==-1
return;
end
for i=1:6
for j=1:6
fprintf(fid,'%d\t',m(i,j));
end
fprintf(fid,'\n');
end
fprintf(fid,'\nSomma diagonale principale=%d',n1);
fprintf(fid,'\nSomma diagonale secondaria=%d',n2);
fclose(fid);
end
poi ti faccio un'altra domanda sai se gli studenti degli anni precedenti possono sostenere l'esame con le nuove modalità(senza i file),o devono necessariamente fare la prova vecchia?