Scorrere due liste e prelevare item con codice maggiore

di il
7 risposte

Scorrere due liste e prelevare item con codice maggiore

Ho due liste di item ognuna contenente un item con campi nome , cognome , codice. vorrei creare un algoritmo per scorrere entrambe le liste l1 e l2 ed inserire in una terza lista l3 gli item che hanno un codice maggiore tra il codice dell'item di l1 e il codice dell'item di l2. io ho fatto cosi ma l'output è un elenco infinito di item che poco hanno a che vedere con quello che dovrebbe uscirmi..


for (L1.moveToStart(); L1.currPos() < L1.length(); L1.next())
	  {
		  it = L1.getValue();
		  int k = L1.length();
		  for (L2.moveToStart(); L2.currPos() <= k ; L2.next()) {

			  it2 = L2.getValue();

			  if (it.getcodice() < it2.getcodice())
			  {
				  L3.append(it2);

			  }

			  if (it.getcodice() > it2.getcodice())
			  {
				  L3.append(it);

			  }

		  }
	  }


prima scorro la lista l1 ed estraggo un item it. Poi scorro la lista l2 , quest'ultima fino a k , che è lo stesso valore della lunghezza della lista l1. in questo modo ho pensato che sarei riuscita a scorrere entrambe le liste per la stessa lunghezza , dato che sono una più grande dell'altra. in alternativa avevo pensato di scorrere tutta la seconda lista ed inserire , prima , un while ( L1.length () == 0) ma in questo caso , stampando l3 , mi esce una lista vuota

7 Risposte

  • Re: Scorrere due liste e prelevare item con codice maggiore

    Non hai spiegato bene l'esercizio.
    Devi scorrere contemporaneamente le liste fino a quando una delle due finisce, e a ogni passaggio aggiungi alla terza lista il maggiore tra i due item? In questo caso il for deve essere uno solo.
    Però l'esercizio, interpretato così, non sembra molto significativo, dato che il risultato dipende strettamente da come hai creato le liste
  • Re: Scorrere due liste e prelevare item con codice maggiore

    Scrivere un algoritmo per inserire in l3 un elemento per ogni elemento contenuto in l1 ( mantenendo lo stesso ordine degli elementi ) che contenga nel campo codice il valore maggiore tra il codice contenuto in l1 e quello contenuto in l2. questo e' l'esercizio, e io l'ho interpretato come ho scritto sopra ma forse ho capito una cosa per un altra
  • Re: Scorrere due liste e prelevare item con codice maggiore

    Capisci bene che non ha senso riportare solo pezzi di esercizio. Cosa vuol dire "quello contenuto in l2"? Non hai definito l2 da nessuna parte. I codici poi sarebbero contenuti negli item, non nelle liste.

    In ogni caso, in L3 stai inserendo k^2 elementi (k = elementi di L1) : dal poco che hai riportato, sembrerebbe che tu ne debba inserire k in L3, non k^2
  • Re: Scorrere due liste e prelevare item con codice maggiore

    Purtroppo e’ un esercizio molto lungo composto da più punti ed è per questo che ho riportato il pezzo sul quale ho avuto problemi , dimenticandomi di specificare meglio le liste. Precedentemente le ho ovviamente definite ed utilizzare e funziona tutto. L2 contiene gli elementi precedentemente trasferiti da un albero di item mentre l1 contiene oggetti item dello stesso tipo dell’albero. Gli item sono stati precedentemente estrapolati da un file quindi sarebbe impossibile postare tutto. Dall’output hai sicuramente ragione , infatti escono molti più elementi di quelli che dovrebbero uscire, il problema è che non so come risolvere il problema. Mi sembrava sensato fare due cicli for , in modo da estrarre un elemento da una lista e uno dall’altra per poi confrontarli, ma devo aver sbagliato il ragionamento
  • Re: Scorrere due liste e prelevare item con codice maggiore

    Ripeto, se non scrivi frasi sensate non ti si può aiutare.

    Una frase sensata potrebbe essere
    Scrivere un algoritmo per inserire in l3 un elemento per ogni elemento contenuto in l1 ( mantenendo lo stesso ordine degli elementi ) che contenga nel campo codice il valore maggiore tra il codice contenuto nell'elemento di l1 e i codici contenuti in tutti gli elementi di l2.
    In mancanza di indicazioni precise, ti si può dire di provare questo in base a quanto hai scritto prima
    
    for (L1.moveToStart(); L1.currPos() < L1.length(); L1.next()) {
    		  it = L1.getValue();
    		  for (L2.moveToStart(); L2.currPos() < L2.length(); L2.next()) {
    			  it2 = L2.getValue();
    			  if (it.getcodice() < it2.getcodice())
    				  it = it2;
    		  }
    		  L3.append(it);
    }
    
  • Re: Scorrere due liste e prelevare item con codice maggiore

    Per il primo post sicuramente hai ragione, per il secondo ho copiato ed incollato il testo dell’esercizio provo a fare un esempio :

    Se ho una lista L1 composta da Item
    (Shanghai,China,42010)
    (Singapore,Singapore,36)
    (Busan,South Korea,2660)

    E una lista L2 composta da Item
    (Hong Kong,Hong Kong,19600)
    (Qingdao,China,18260)
    (Rotterdam,Netherlands,145889)
    (Dalian,China,9770)
    (Los Angeles,United States,9460)

    In l3 dovrei inserire :
    (Shanghai,China,42010)
    (Qingdao,China,18260)
    (Rotterdam,Netherlands,145889)

    Spero così di essermi fatta capire
  • Re: Scorrere due liste e prelevare item con codice maggiore

    
    for (L1.moveToStart(), L2.moveToStart(); L1.currPos() < L1.length() && L2.currPos() < L2.length(); L1.next(), L2.next()) {
    	it = L1.getValue();
    	it2 = L2.getValue();		  
    	if (it.getcodice() < it2.getcodice())
    		L3.append(it2);
    	else
    		L3.append(it);
    }
    for (; L1.currPos() < L1.length(); L1.next()) {
    	it = L1.getValue();
    	L3.append(it);
    }
    
Devi accedere o registrarti per scrivere nel forum
7 risposte