Vai al contenuto

Primario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Secondario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Sfondo: Blank Waves Squares Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Corsi di Laurea










ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.    Accetto l'uso dei cookie
-->
Foto

[HELP] esercizio matlab


  • Effettua l'accesso per rispondere
Questa discussione ha avuto 9 risposta/e

#1
xmarcox

xmarcox

    Member

  • Utente
  • StellaStella
  • 22 Messaggi:

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( B);
 
%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;




#2
Folgore

Folgore

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1805 Messaggi:

@xmarcox

Ma non ti funziona?



#3
xmarcox

xmarcox

    Member

  • Utente
  • StellaStella
  • 22 Messaggi:

@Folgore

grazie per la risposta, si funziona ma non capisco il procedimento.Avevo chiesto proprio se qualcuno me lo spiegasse e se ci fosse un metodo alternativo più semplice , le parti in blu sono quelle che non ho capito.



#4
Folgore

Folgore

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1805 Messaggi:

@xmarcox

Ti posso rispondere io magari. Ma voglio prima capire da dove l'hai preso.

Fammi sapere.



#5
xmarcox

xmarcox

    Member

  • Utente
  • StellaStella
  • 22 Messaggi:

@Folgore

Me l'ha dato un ragazzo tanto tempo fa. è un esercizio svolto in aula circa 5 anni fa credo...



#6
Folgore

Folgore

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1805 Messaggi:

@xmarcox

Vedendo l'esercizio direi che così va bene.....non mi vengono in mente approcci più semplici.

Se poi qualcuno del forum vuole contraddirmi, ne sono ben lieto.

Ciao.


  • A peppepeppo piace questo post

#7
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:

nemmeno a me viene in mente una cosa più semplice.....cmq per rispondere @xmarcox quei due for della quarta funzione ci sono per evitare che si vada a pescare sull' elemento di indice zero, che non esiste evidentemente.

Ti consiglio di fare una simulazione "a mano" per capire meglio i passaggi!

La quinta funzione è un banale controllo fra i singoli elementi dei due vettori.



#8
xmarcox

xmarcox

    Member

  • Utente
  • StellaStella
  • 22 Messaggi:

@peppepeppo 
Grazie ho capito!!!!!



#9
Folgore

Folgore

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1805 Messaggi:

@xmarcox

Studia per bene, tanto ragionare in termini di algoritmi tornerà sempre in futuro.

Ciao.



#10
xmarcox

xmarcox

    Member

  • Utente
  • StellaStella
  • 22 Messaggi:

Grazie @Folgore .






Leggono questa discussione 0 utenti

0 utenti, 0 ospiti, 0 utenti anonimi