Come da titolo volevo chiedervi un aiuto riguardo a questo programma:

!Siano dati riempimento ed elementi di 2 vettori di numeri interi v1 e v2. Si assuma v1 ordinato in modo strettamente crescente, v2 disordinato. Scrivere
!un programma che per ogni valore x di v1 (v1(i),v1(i+1),v1(n)), identifichi gli elementi di v2 la cui distanza dall'elemento x(v1(i)) sia minore di
!un'assegnata costante k, e ne calcoli il loro valor medio M. Si provveda ad eliminare tali elementi da v2 e sostituire l'elemento x nel vettore v1 con
!il valore M trovato. Stampare v1 e v2. Articolare il programma in sottoprogrammi.

Il codice che ho scritto è il seguente:

!*** SEZIONE DICHIARATIVA1

INTEGER:: v1,v2,elem,riemp1,riemp2,maxnum,k,cont,somma
PARAMETER(maxnum=100)
DIMENSION v1(maxnum),v2(maxnum),elem(maxnum)


!*** SEZIONE ESECUTIVA

! Acquisizione riempimento e valori di v1 e v2:

CALL LEGGI_VET(v1,riemp1,maxnum)
CAll LEGGI_VET(v2,riemp2,maxnum)

! Ordinamento in maniera strettamente crescente di v1 mediante bubble sort

! Acquisizione valore k:

WRITE(*,*) " Inserisci valore k:"
READ(*,*) k

DO i=1,riemp1 ! scorro gli elementi di v1

DO j=1,riemp2 ! scorro gli elementi di v2
IF(ABS(v2(j)-v1(i)<k)) THEN
cont=cont+1 ! ho trovato un elemento di v2 che dista dall'elemento x di v1 una distanza minore di k
elem(cont)=v2(j) ! memorizzo in un vettore l'elemento che possiede i requisiti richiesti
! eliminazione elemento da v2:
CALL ELIMINA(v2,riemp2,maxnum,val)
END IF
END DO

! Calcolo media degli elementi che distano dall'elemento x meno di k:

somma=0
DO i=1,cont
somma=somma+elem(i)
END DO

M=somma/cont

! sostituzione elemento x di v1 con il valore M appena calcolato:

v1(i)=M

END DO

! Stampo v1 e v2:

CALL STAMPA_VET(v1,riemp1,maxnum)
CALL STAMPA_VET(v12riemp2,maxnum)

READ(*,*)

END PROGRAM

Scusate ma se provo ad inserire con code mi fa tutto sulla stessa linea non so perché...

Comunque la fase che penso di aver sbagliato è quella di eliminazione del valore, penso sia palese, nel senso che se io vado ad eliminare da v2 quel valore che mi dista dal valore x di v1 mediante uno scorrimento appunto, mi succede che adesso ho in posizione 1 in v2 un valore che,dal momento che il ciclo interno incrementa l'indice j, non sarà considerato, anche se dista da x per un valore maggiore di k, non so se mi son spiegato bene, mi farebbe molto piacere se poteste dirmi la vostra a riguardo, grazie