Visualizzazione dei risultati da 1 a 10 su 10

Visualizzazione discussione

  1. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Klibion Visualizza il messaggio
    Quindi se nel ciclo for (int i=0, i<pos, i++) non specifico l'array a, quest'ultimo mi cicla comunque lo stesso al suo interno?
    Questo ciclo for di per sé non ha nulla direttamente a che fare con gli array o altro. Quello che fa è semplicemente far andare il valore di una variabile ( i ) da un valore x ad un valore y a passi di 1, ciclo per ciclo.
    Se pos vale 5, i valori che i assume ad ogni ciclo sono 0, 1, 2, 3 e 4. Cosa rappresentano questi valori? Nulla in particolare, non per il for perlomeno. Potrebbero rappresentare delle coordinate X sul piano cartesiano, potrebbero essere dei fattori di moltiplicazione per altro, potrebbero essere il conteggio delle patate che hai in casa.
    Cosa rappresentano lo devi sapere tu e chiaramente userai i in modo opportuno per quello che appunto sai di dover fare.

    Se poi questa variabile i la usi come indice in un array a[i] allora vuol dire "il valore contenuto all'indice i". Stop tutto qui.

    Quote Originariamente inviata da Klibion Visualizza il messaggio
    Io avevo sempre scritto A[POS] perché pensavo che così mettessi in chiaro che quel POS fosse una posizione dell'array A e non un valore qualsiasi.
    No, non è così che va pensato, infatti.

    Quote Originariamente inviata da Klibion Visualizza il messaggio
    Ugualmente però continua a darmi problemi:

    codice:
    		public static boolean primaOccorrenza (int[]a, int pos){
    			
    		   for (int i=0; i<pos; i++){
    			  if (a[i]!=pos){
    				return true;
    			  }
    		   } return false;
    		}
    Qui ci sono 2 problematiche, una anche a livello di logica, di "ragionamento".
    Innanzitutto non devi confrontare pos. Questo è solo un indice. Devi confrontare a[pos] (un valore ben preciso nell'array che è quello richiesto dalla posizione pos) con TUTTI gli altri valori precedenti, a[0], a[1] ecc.... fino a a[pos-1]. Il indice i va appunto da 0 fino a pos-1.

    Quindi un elemento da confrontare è a[i] (i 0...pos-1) e l'altro è a[pos]

    Ora c'è la questione più di "ragionamento". Immagina che pos sia 4 (quindi gli indici da verificare sono 0, 1, 2, 3). Se all'indice 0 NON trovi lo stesso valore che c'è in a[pos], cosa puoi dire subito? Assolutamente nulla. Non è uguale a quello all'indice 0 ma potrebbe trovarsi all'indice 1, 2, o 3.

    Il succo è semplice: se trovi lo stesso valore, allora puoi SUBITO dire che a[pos] NON è la prima occorrenza (false). Se non lo trovi non puoi dedurre nulla subito, devi andare avanti e cercare ad altri indici.

    Se hai esaurito il for cosa puoi dedurre? Che il valore a[pos] NON si trova agli indici precedenti ... e quindi il valore in a[pos] è la "prima occorrenza".
    Ultima modifica di andbin; 21-01-2017 a 12:30
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.