salve ragazzi ho un esercizio svolto(svolto benissimo perché funziona) di matlab(non si possono usare le built-in). L'esercizio mi chiede:
1-inserire il numero di elementi dei vettori
2-caricare due vettori con quel numero di elementi
3-riordinare gli elementi dei vettori in ordine crescente
4-confrontare elemento per elemento i due vettori e crearne un terzo
delle stesse dimensioni dei primi due con i valori più piccoli
dalla soluzione l'unica cosa che non ho capito è il punto 3 (riordinare gli elementi dei vettori in ordine crescente), non riesco a capire perché si fa con due "for", qualcuno sa spiegarmi il perché?Oppure c'è un altro modo? E qualcosa di strano anche nel punto 4.
SOLUZIONE( ho allegato anche il file, la parte che non ho capito è quella di colore blu ):
clear all;
close all;
clc;
n=input('Quanti elementi vuoi caricare per ciascun vettore? ');
fprintf('\n\n');
for k=1:1:n
fprintf('Elemento %d dei vettori\n',k);
a(k)=input('Inserisci il valore per il vettore 1: ');
b(k)=input('Inserisci il valore per il vettore 2: ');
fprintf('\n\n');
end
%ordinare i due vettori
for z=n:-1:2
for k=1:1:(z-1)
if a(k)>=a(k+1)
temp1=a(k);
a(k)=a(k+1);
a(k+1)=temp1;
clear temp;
end
if b(k)>=b(k+1)
temp1=b(k);
b(k)=b(k+1);
b(k+1)=temp1;
clear temp;
end
end
end
fprintf('Vettore a = \n');
disp(a);
fprintf('Vettore b = \n');
disp(
;
%confrontare elemento per elemento i due vettori e crearne un terzo
%(1) delle stesse dimensioni dei primi due con i valori più piccoli
%(1)
fprintf('Vettore con i valori PIU'' PICCOLI:\n\n');
k=1;
z=1;
for x=1:1:n
if a(k)<=b(z)
c(x)=a(k);
k=k+1;
else
c(x)=b(z);
z=z+1;
end
end
fprintf('Vettore c = \n');
disp©;
clear all;