Caricare documenti e articoli online 
INFtub.com è un sito progettato per cercare i documenti in vari tipi di file e il caricamento di articoli online.


 
Non ricordi la password?  ››  Iscriviti gratis
 

Relazione di informatica - Creare un vettore che sia una fusione tra due vettori in ordine crescente

informatica



Relazione di informatica


TESTO:

Creare un vettore che sia una fusione tra due vettori in ordine crescente.


ANALISI:

Il problema richiede la creazione di un vettore che contenga due vettori precedentemente dati e che li disponga al suo interno in ordine crescente. Noi abbiamo utilizzato tre vettori, i primi due, per 626g65g memorizzare i vettori dati dall'utente , l'altro, per utilizzarlo come "contenitore" della fusione. Dopo aver fatto inserire i vettori all'utente eseguo i controlli per ordinare il vettore finale in ordine crescente. Per farlo mi servono varie selezioni.

Le variabili utilizzate sono state:

n1,n2,n3 di tipo interi come indici dei vettori;



vett1,vett2 di tipo Array, come vettori inseriti dall'utente;

vett3 di tipo Array, come vettore contenente i primi due.

I cicli utilizzati sono stati:

il ciclo a iterazione finale (Repeat-Until) per l'inserimento dei primi due vettori;

il ciclo a iterazione iniziale (While-to-do) per la stampa del terzo vettore.


RAFFINAMENTO:


programma vettori;

inizio

(*acquisizione primo vettore*)

Inserisci('Scrivi i numeri appartenenti al 1ø vettore seguito da invio, digita 0 per terminare');

n1:=0;

ripeti

incrementa(n1);

ricevi(vet1[n1]) ;

finchè vet1[n1]=0;

inserisci;

(*acquisizione secondo vettore*)

Inserisci ('Scrivi i numeri appartenenti al 2ø vettore seguito da invio, digita 0 per terminare');

n2:=0;

ripeti

incrementa(n2);

ricevi(vet2[n2]) ;

finchè vet2[n2]=0;

Inserisci;

(*fusione vettori*)

n2:=1;

n1:=1;

ricevi

se (vet1[n1]=0) e (vet2[n2]<>0) allora

inizio

vet3[n3]:=vet2[n2];

incrementa(n2);

fine;

se (vet2[n2]=0) e (vet1[n1]<>0) allora

inizio

vet3[n3]:=vet1[n1];

incrementa(n1);

fine;

se (vet2[n2]<>0) e (vet1[n1]<>0) allora

inizio

se vet1[n1]<vet2[n2] allora

inizio

vet3[n3]:=vet1[n1];

incrementa(n1);

fine

altrimenti

inizio

vet3[n3]:=vet2[n2];

incrementa(n2);

fine;

fine;

incrementa(n3);

finchè (vet2[n2]=0) e (vet1[n1]=0);

n3:=0;

mentre vet3[n3]<>0 esegui

inizio

Inserisci (vet3[n3]);

incrementa(n3);

fine;

fine.



PROGRAMMA:


program vettori;

uses crt;

var n1,n2,n3:integer;

vet1,vet2,vet3:array[1..200] of integer;

begin

clrscr;

(*acquisizione primo vettore*)

Writeln('Scrivi i numeri appartenenti al 1ø vettore seguito da invio, digita 0 per terminare');

n1:=0;

repeat

inc(n1);

read(vet1[n1]) ;

until vet1[n1]=0;

writeln;

(*acquisizione secondo vettore*)

Writeln('Scrivi i numeri appartenenti al 2ø vettore seguito da invio, digita 0 per terminare');

n2:=0;

repeat

inc(n2);

read(vet2[n2]) ;

until vet2[n2]=0;

writeln;

(*fusione vettori*)

n2:=1;

n1:=1;

repeat

if (vet1[n1]=0) and (vet2[n2]<>0) then

begin

vet3[n3]:=vet2[n2];

inc(n2);

end;

if (vet2[n2]=0) and (vet1[n1]<>0) then

begin

vet3[n3]:=vet1[n1];

inc(n1);

end;

if (vet2[n2]<>0) and (vet1[n1]<>0) then

begin

if vet1[n1]<vet2[n2] then

begin

vet3[n3]:=vet1[n1];

inc(n1);

end

else

begin

vet3[n3]:=vet2[n2];

inc(n2);

end;

end;

inc(n3);

until (vet2[n2]=0) and (vet1[n1]=0);

n3:=0;

while vet3[n3]<>0 do

begin

write (vet3[n3]);

inc(n3);

end;

repeat until keypressed;

end.




Privacy




Articolo informazione


Hits: 2267
Apprezzato: scheda appunto

Commentare questo articolo:

Non sei registrato
Devi essere registrato per commentare

ISCRIVITI



Copiare il codice

nella pagina web del tuo sito.


Copyright InfTub.com 2025